linux怎么查看本机内存大小
271
2022-11-05
shell脚本之循环语句和转义字符
一、for循环语句
for语句需要定义一个变量和取值列表,根据不同的取值执行相同的命令,知道变量值用完。 取值列表里包含多个属性相同的对象,例如:IP地址,通信录等。
#for语句结构 for 变量名 in 取值列表 do 命令序列 done
示例1:for循环的入门,一般都是从求和开始,下面就先就1~100的和。 #!/bin/bash # sum=0 for i in {1..100} do sum=$[$i+$sum] done echo "0-100的和为:" $sum #如果算的是1~100之间每个两位数的和,即{1、3、5、7、...、99},for循环如下: for i in {1..100..2} #其他都是一样的。
语句示例补充:下面是求1~100的和的不同表达。(都测试过,这里就不再贴图了,想试的可以复制试试) 格式一: #!/bin/bash # sum=0 for i in $(seq 1 100) #{1、3、5、...、99}相加为$(seq 1 2 100) do sum=$[$i+$sum] done echo "0-100的和为:" $sum 格式二: #!/bin/bash # sum=0 for ((i=1;i<=100;i++)) #隔一个相加, for ((i=1;i<100;i+=2)) do sum=$[$i+$sum] done echo "0-100的和为:" $sum
示例2:批量添加用户,用户名存放在users.txt文件中,每行一个;初始password均设为123456 #!/bin/bash # a=`cat ~/test/users.txt` for i in $a do useradd $i echo "123456" | passwd --stdin $i &>/dev/null done
示例3:根据IP地址检查主机状态;IP地址存放在ipadds.txt文件中,每行一个; #!/bin/bash # a=`cat ~/test/ipadds.txt` for i in $a do ping -c 3 -i 0.5 -W 2 $i &>/dev/null if [ $? -eq 0 ];then echo "$i 主机在线" else echo "$i 主机不在线" fi done
二、while循环语句
根据特定条件反复执行一个命令序列,直到不满足条件为止。 编写时可能会出现死循环,要避免这种情况发生 true(真)和false(假)为特殊条件测试操作,也可以在if语句的条件测试中使用。
true作为条件时,表示条件永远成立,无限执行,也就是死循环,需要强制终止
false作为条件时,表示条件不成立,不执行命令序列
#while语句结构 while 条件测试操作 do 命令序列 done
示例1:批量添加用户; 用户名称以stu开头,按数字顺序进行编号; 一共添加20个用户,即stu1、stu2、......、stu20 初始password均设为123456 #!/bin/bash # i=1 while [ $i -le 20 ] do useradd stu$i echo "123456" | passwd --stdin $i &>/dev/null let i++ done
示例2:猜商品价格游戏;通过变量RANDOM获得随机数;提示用户猜测并记录次数,猜中后退出循环#我这里还加了if语句填了一点其他元素。#!/bin/bash#a=$(expr ${RANDOM} % 1000)i=0while truedo read -p "猜猜看我想的是哪个数,范围在0~999。" shu let i++ if [ $shu -eq $a ];then if [ $i -le 10 ];then echo "太强了,你猜了$i 次就猜中了,可惜没得奖励。" else echo "猜了$i 次才猜中,你还差的远呢" fi exit 0 elif [ $shu -lt $a ];then if [ $(expr $a - $shu) -le 5 ] ;then echo "虽然数小了,但已经很近了,你在想想" else echo "不好意思,猜的太小了" fi else if [ $(expr $shu - $a) -le 5 ];then echo "虽然数大了,但已经很近了,你在考虑考虑" else echo "不好意思,猜大了,数再小点" fi fidone
三、until循环语句
#!/bin/bash#a=0sum=0until [ $a -gt 100 ]dosum=$[$sum+$a]let a++doneecho "1-100的和为:$sum"
 ## 四、结束循环----break和continue - break跳出单个循环 ```c #!/bin/bash for ((a=1; a<=5; a++)) do echo "outer loop: $a" for ((b=1; b<=50; b++)) do if [ $b -eq 5 ] then break fi echo "inter loop: $b" done done
默认包含 空格,制表符,换行符 查看命令:set | grep IFS IFS=$' \t\n' 修改成只换行 IFS=$'\n' IFS=: IFS=',' IFS.OLD=$IFS IFS=$'\n' ... IFS=$IFS.OLD 输出环境变量PATH所包含的所有目录以及其中的所有可执行文件
六、转义字符
echo -n 表示不换行输出echo -e 输出转义字符,将转义后的内容输出到屏幕上常用的转义字符如下:\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。\n 换行,被输出的字符从"\n"处开始另起一行。\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;\v 与\f相同;\t 转以后表示插入tab,即横向制表符;\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖\\ 表示插入"\"本身;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~