shell study-11day--shell流程控制语句while

1while循环语句及循环嵌套

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解释转义字符

个人公众号:

image.png

猜你喜欢

转载自blog.51cto.com/13440764/2575383