linux字符测试以及for循环

时间:2023-03-10 07:15:03
linux字符测试以及for循环

1、字符测试

常用的测试字符的命令:

== 、=都表示测试字符相等,格式为【 A = B 】需要注意的是变量与等号之间需要有空格,不然测试的结果不正确示例如下

若字符与等号不加空格,假设变量A=ab  B=cd,  比较A B的值是否相等,使用echo $?  查看命令状态,因为A不等于B 所以命令返回状态应该为1

linux字符测试以及for循环

!=:”表示测试字符是否等于

> 判断字符是否大于

<判断字符是否小于

此外  -n +字符串表示测试指定字符串是否为空,-s + 字符串表示测试字符串是否为不空

for循环以及练习

for循环用法:

for 变量 in 列表;do(若do在下一行前面可不加分号)

循环体(要执行的命令)

done

如何生成列表呢,方法有两种。

1、使用花括号例如 {1..100}  表示自动展开从1到100

2、使用命令替换 类似于`seq 10`  表示为从1循环到10,

seq命令格式:  seq  起始数(可以忽略)步进长数(可以忽略)结束数示例如下,需要注意的是seq有设置步进长数的时候,有时候并不会匹配最后一位。

linux字符测试以及for循环

linux字符测试以及for循环

练习for循环:编写一个脚本,依次向每一个用户的前面加hello问好,最后统计共有多少个用户。

脚本如下: 定义变量总共有多少个用户:  declare -i  LINES=` wc -l  /etc/passwd  | cut -d' ' -f1`   此处在做实验时-d后面分隔符为空格,未选择空格为分隔符,导致报错

使用for循环:   for I in `seq 1 $LINES` ;do

echo"hello, `head -n $I  /etc/passwd | tail -1 | cut  -d: -f1` "     使用head命令取得前n行的用户,tail -1取得每一次循环最后一个 用户

done

echo "  there have  $I user "

实验结果如下图:

linux字符测试以及for循环

练习2 : 批量添加10个用户,user1到user10并且密码同用户名,当用户已经存在时不添加。

脚本如下:  for  I  in {1..10};do

if  id  user$I ; then

echo " user$I  already existed"

else

useradd user$I  &> /dev/null

echo "user$I"  |     passwd --stdin   user$I &> /dev/null

echo" user$I add success"

fi

done

下图是用户已经存在:

linux字符测试以及for循环

同理利用for循环,也可以批量删除用户,下图为删除用户后,添加的用户。

linux字符测试以及for循环

使用 cat  /etc/passwd 看到新添加的用户。cat

linux字符测试以及for循环

练习三: 批量添加10个用户,当接受到addd参数时,批量添加10个用户,当接收到dell 参数时批量删除用户,如果用户已经存在则不添加,如果用户不存在则不删除。

脚本截图如下:

linux字符测试以及for循环

linux字符测试以及for循环

批量添加用户:linux字符测试以及for循环

linux字符测试以及for循环

使用 cat  /etc/passwd 验证是否添加用户

linux字符测试以及for循环

批量删除用户:

linux字符测试以及for循环