1、while循环语句及循环嵌套
(1)语法格式
while-do-done
重复测试指令的条件,只要条件成立就反复执行对应的命令操作,直到命令不成立或为假;
语法格式:
while 测试命令 do 命令 done
(2)实例
A、降序输出1-5
[root@test ~]# vi while-1.sh #!/bin/bash i=5 while [ $i -gt 0 ] do echo $i i=$[$i-1] done [root@test ~]# sh while-1.sh 5 4 3 2 1 [root@test ~]#
B、输出两数相加的结果
[root@test ~]# cat while-2.sh #!/bin/bash i=1 while [ $i -lt 5 ] do sum=$(($i+$i)) echo "$i+$i=$sum" ((i++)) done #双括号可以进行逻辑运算,四则运算 [root@test ~]# sh while-2.sh 1+1=2 2+2=4 3+3=6 4+4=8 [root@test ~]#
(3)循环嵌套
A、创建用户
[root@test ~]# vi name.txt aa bb cc [root@test ~]# vi useradd.sh #!/bin/bash for name in $(cat /root/name.txt) do id $name &>/dev/null if [ $? -ne 0 ];then useradd $name echo "123456" |passwd --stdin $name &>/dev/null echo "$name is created" else echo "$name is exist" fi done [root@test ~]# sh useradd.sh aa is created bb is created cc is created [root@test ~]# id aa uid=501(aa) gid=501(aa) groups=501(aa)
seq 用于生成从一个数到另一个数之间的所有整数。
用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数。 -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 --help 显示此帮助信息并退出 --version 显示版本信息并退出
从1循环到100的两种方法(bash 其它的shell没试过)
for x in `seq 1 100`;do echo $x;done for x in {1..100};do echo $x;done
-f 指定输出格式
#seq -f “%3g” 13 数字位数为三位,不足补空格
[root@test ~]# seq -f “%3g” 3 “ 1” “ 2” “ 3” [root@test ~]#
#seq -f “%03g” 1 5 数字位数为三位,不足补零
[root@test ~]# seq -f “%03g” 1 5 “001” “002” “003” “004” “005” [root@test ~]#
#seq -f "str%03g" 1 3
[root@test ~]# seq -f "str%03g" 1 3 str001 str002 str003 [root@test ~]#
-w 指定输出数字同宽,与-f部分作用相似,不可与-f选项同时使用
#seq -w 8 12
[root@test ~]# seq -w 8 12 08 09 10 11 12 [root@test ~]#
-s 指定分隔符,默认分隔符是/n(回车)
#seq -s " " 1 5 空格作为分隔符
[root@test ~]# seq -s " " 1 5 1 2 3 4 5 [root@test ~]#
#seq -s "`echo -e "\t"`" 1 3 \t作为分隔符
[root@test ~]# seq -s "`echo -e "\t"`" 1 3 1 2 3 [root@test ~]#
注:echo -e解释转义字符
个人公众号: