写一个脚本,完成以下功能:
说明:此脚本能于同一个repo文件中创建多个yum源的指向;
- 1. 接受一个文件名做为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求此文件不能事先存在,否则报错;
- 2. 在脚本中,提醒用户输入repo id; 如果为quit,则退出脚本;否则,继续完成下面的步骤:
- 3. repo name以及baseurl的路劲,而后以repo文件的格式将其保存至指定的文件中;
- 4. enabled默认为1,而gpgcheck默认设定为0;
- 5. 此脚本会循环执行多次,除非用户为repo id 指定为quit
#!/bin/bash
#
REPOFILE=/etc/yum.repos.d/$1
if [ -e $1 ];then
echo "$1 exists."
exit 3
fi
read -p "Repository ID:" REPOID
until [ $REPOID = ‘quit‘ ];do
echo"$REPOID" >> RREPOFILE
read-p "Repository name:" REPONAME
echo"name=$REPONAME" >> $REPOFILE
read-p "Repository Baseurl:" REPOURL
echo"baseurl=$REPOURL" >> $REPOFILE
echo-e ‘enbled=1\nngpgcheck=0‘ >>$REPOFILE
read-p "Repository ID:" REPOID
done
echo "hello,word"
---------------------------------------------------------------------------------
breack:提前退出循环
#!/bin/bash
while :; do
who |grep ‘admin‘ &>/dev/null
if [ $? = 0 ];then
break
fi
sleep 5
echo "`date` admin not longin"
done
echo "admin denglu"
------------------------------------------------------------------------------------------------------
#!/bin/bash
#
while :; do
read -p "FILE path:" FILEPATH
[$FILEPATH = ‘quit‘ ] && echo"quit" && break
if [ -e $FILEPATH ];then
echo "$FILEPATH exists"
else
echo "NO $FILEPATH"
fi
done
----------------------------------------------------------------------
~
continue:提前进入下一轮循环,一定要出发某个条件
-----------------------------------------------------------------------------
while的特殊用法一:无限循环
while :; do
done
-------------------------------------------------------------------------------------
while的特殊用法二: 使用while来读取文件的每一行。然后进行处理
while read LINE; do
done </PATH/TO/SOMEFILE
写一个脚本判断passwd文件里所有bin/bash的用户,并把用户名显示出来
#!/bin/bash
#
FILE=/etc/passwd
while read LINE;do
[ `echo $LINE | awk -F : ‘{print $7}‘` ==‘/bin/bash‘ ] && echo $LINE | awk -F : ‘{print $1}‘
done< $FILE
只显示6个用户
#!/bin/bash
#
FILE=/etc/passwd
declare -i I=1
while read LINE;do
[ `echo $LINE | awk -F : ‘{print $7}‘` ==‘/bin/bash‘ ] && echo $LINE | awk -F : ‘{print $1}‘ && let I++
[ $I -eq 6 ] && break
done < $FILE
~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果用户id小于505则不显示
#!/bin/bash
#
FILE=/etc/passwd
declare -i I=1
while read LINE;do
[ `echo $LINE | awk -F : ‘{print $7}‘` ==‘/bin/bash‘ ] && echo $LINE | awk -F : ‘{print $1}‘ && let I++
[ `echo $LINE | awk -F : ‘{print $3}‘` -lt505 ] && continue
[ $I -ge 6 ] && break
done < $FILE
写一个脚本:
- 1. 判断一个指定的bash脚本是否有语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其他任何键可以通过vim打开这个脚本
- 2. 如果用户通过vim打开编译后保存退出时仍然有错误,则重复第1步中的内容;否则,就正常关闭退出
#!/bin/bash
#
if ! bash $1 &> /dev/null; then
while :; do
read -p "Syntax error q|Q toquit, others for editing:" A
[ $A = q -o $A = Q ] && exit 5 || vim $1
done
fi