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 [选项]… 首数 尾数
或: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解释转义字符
个人公众号,微信搜索:linux言叙