练习1,
写一个脚本分别计算1-100,之间奇数和偶数之和
ji_sum.sh #!/bin/bash # let sum=0 for I in {1..100};do if [ $[$I%2] -eq 1 ];then let sum+=I fi done echo $sum 2500 ou_sum.sh #!/bin/bash # let sum=0 let I=1 while [ $I -le 100 ];do if [ $[$I%2] -eq 0 ];then let sum+=$I fi let I++ done echo $sum 2500
扩展:计算1-1000相加和,大于10000则退出
#!/bin/bash
#
let sum=0
let I=1
while [ $I -le 1000 ];do
let sum+=I
if [ $sum -ge 10000 ];then
break # break ,条件满足,则退出程序。
fi
let I++
done
echo $I
echo $sum
141
10011
练习2.
while ,break
提示用户输入信息,判断是否为文件,输入’quit'则直接退出
#!/bin/bash # while :;do # 直接循环 read -p "File path: " FILENAME [ $FILENAME == 'quit' ] && break #输入 'quit'退出 if [ -e $FILENAME ];then # ‘ -e ' 文件判断 echo " The is file!" else echo " The is not file~" fi done
练习3.
continue 跳出当前循环,不会退出
取出shell为bash的用户,要求:ID 大于505,且只取前6位
[root@beary test]# cat linebash.sh #!/bin/bash # FILE=/etc/passwd let I=0 while read LINE;do #逐行读取文档 [ `echo $LINE | awk -F: '{print $3}'` -le 505 ] && continue [ `echo $LINE | awk -F: '{print $7}'` == '/bin/bash' ] && echo $LINE | awk -F: '{print $1}' && let I++ [ $I -eq 6 ] && break done < $FILE #输入重定向 continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环
while 的特殊用法一:
while :;do
done
while的特殊用法二:
while read LINE; do
done < /PATH/TO/SOMEFILE
while, untile,for
break: 提前退出
continue: 提前结束本轮循环,进入下一轮循环
练习4.
写一个脚本,完成以下功能:
说明:此脚本能于同一个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'.
1 [root@beary test]# cat yumfile.sh 2 #!/bin/bash 3 # 4 REPOFILE=/etc/yum.repos.d/$1 5 6 if [ -e $REPOFILE ];then # 判断文件是否已经 7 echo "$1 exists." 8 exit 3 9 fi 10 11 read -p "Repository ID: " REPOID 12 until [ $REPOID == 'quit' ];do 13 echo "[$REPOID]" >> $REPOFILE 14 read -p "Repository name: " REPONAME 15 echo "name=$REPONAME" >> $REPOFILE 16 read -p "Repository url: " REPOURL 17 echo "baseurl=$REPOURL" >> $REPOFILE 18 echo -e 'enabled=1\ngpgcheck=0' >> $REPOFILE #enabled默认为1 ,gpgcheck默认为0 19 read -p "Repository ID: " REPOID 20 done 21 22 echo "hello,world."
[root@beary test]# cat /etc/yum.repos.d/test2.repo
[2]
name=ABC
baseurl=http://abc.test.com
enabled=1
gpgcheck=0
[3]
name=abcw
baseurl=www.123.com
enabled=1
gpgcheck=0