linux字符测试以及for循环
1、字符测试
常用的测试字符的命令:
== 、=都表示测试字符相等,格式为【 A = B 】需要注意的是变量与等号之间需要有空格,不然测试的结果不正确示例如下
若字符与等号不加空格,假设变量A=ab B=cd, 比较A B的值是否相等,使用echo $? 查看命令状态,因为A不等于B 所以命令返回状态应该为1
!=:”表示测试字符是否等于
> 判断字符是否大于
<判断字符是否小于
此外 -n +字符串表示测试指定字符串是否为空,-s + 字符串表示测试字符串是否为不空
for循环以及练习
for循环用法:
for 变量 in 列表;do(若do在下一行前面可不加分号)
循环体(要执行的命令)
done
如何生成列表呢,方法有两种。
1、使用花括号例如 {1..100} 表示自动展开从1到100
2、使用命令替换 类似于`seq 10` 表示为从1循环到10,
seq命令格式: seq 起始数(可以忽略)步进长数(可以忽略)结束数示例如下,需要注意的是seq有设置步进长数的时候,有时候并不会匹配最后一位。
练习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 "
实验结果如下图:
练习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
下图是用户已经存在:
同理利用for循环,也可以批量删除用户,下图为删除用户后,添加的用户。
使用 cat /etc/passwd 看到新添加的用户。cat
练习三: 批量添加10个用户,当接受到addd参数时,批量添加10个用户,当接收到dell 参数时批量删除用户,如果用户已经存在则不添加,如果用户不存在则不删除。
脚本截图如下:
批量添加用户:
使用 cat /etc/passwd 验证是否添加用户
批量删除用户: