在linux里面循环语句有很多,今天先介绍一下,循环里面for语句的使用方法。



用法格式:

for VAR_NAME in 元素1 元素2 ...; do

语句1;

语句2;

...

done


先写一个最简单的写法,输出1到10


for num in 1 2 3 4 5 6 7 8 9

do

echo $num

done

执行的结果如下:

111848195.jpg


再来个稍微复杂点,比如批量创建用user1 user2 user3 并为用户指定shell为cshell


for Uname in user1 user2 user3;do

useradd -s /bin/csh $Uname


done

执行的结果如下:


我们成功添加了user1 user2 user3三个用户,并指定了shell为cshell。

135039786.jpg

若我们要将刚创建的三个用户以以下格式显示出来。用循环怎么写呢?

The UserNama is **

The UID      is **

The shell    is **

代码如下:

for Uname in user1 user2 user3

Uid=`grep '$Uname' /etc/passwd |cut -d f3`

Ushell=`grep '$Uname' /etc/passwd |cut -d f7`

echo "The UserName is $Uname"

echo "The UID is $Uid"

echo "The shell is $Ushell"

执行结果如图:

191627546.jpg


这里要强调引号的使用方法:

bash的引号有三种,分别是双引号,单引号和反引号。

双引号:弱引用,可以实现变量替换;

单引号:强引用,不替换,而显示字符串本身;

反引号:命令引用, ``相当于$()

例如:我们声明一个变量 $num=100

echo "This number is $num"

输出的结果是 this number is 100

假如将双引号换成单引号输出的结果将是:

this number is $num

反引号则能够实现命令引用,若我们需要将命令的结果赋值给另一个变量则可以使用反引号进行命令引用。


   for循环语句可以说并不复杂,但任何简单的命令都要多练习才能灵活运用,就像最后一个例子一样,这个结果我花了几个小时在调试。单引号,双引号都用了,就是忽略了反引号。希望大家少走弯路,多练习。