14. Shell脚本中各种奇怪的符号

[root@localhost code]# cat read_num.sh
#!/usr/bin/bash

###########################################################
#useradd                                                  #
#v1.0 by wesley 21/4/2020                                 #
###########################################################
read -p "Please input a number: " num

while true
do
        if [[ "$num" =~ ^[0-9]+$ ]];then
                break
        else
                echo "error number!"
                read -p "Please input a number: " num
        fi
done

while true
do
        read -p "Please input prefix:" prefix
        if [ -n "$prefix" ];then
                break
        else
                read -p "Please input prefix:" prefix
        fi
done

for i in `seq $num`
do
        user=$prefix$i
        useradd $user
        echo "123"| passwd --stdin $user &>/dev/null
        if [ $? -eq 0 ];then
                echo $user created
        fi
done
[root@localhost code]#
[root@localhost code]# sh read_num.sh
Please input a number: a
error number!
Please input a number: 5
Please input prefix:abc
abc1 created
abc2 created
abc3 created
abc4 created
abc5 created

其中 ~ 其实是对后面的正则表达式表示匹配的意思,如果匹配就输出1, 不匹配就输出0

[[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0

[root@localhost code]# [[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0
0
[root@localhost code]# test=0
[root@localhost code]# [[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0
1
[root@localhost code]# test=a
[root@localhost code]# [[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0
0
"$newip" =~ ^([0-9]{1,3}.){3}[0-9]{1,3}$ ]]
^([0-9]{1,3}.){3}[0-9]{1,3}$
([0-9]{1,3}.)开头
连续1-3个[0-9]字符 在[[]]内{1,3}不需要转义
后面那个.是ip分隔符,重复三次,最后连续1-3个[0-9]字符结尾

发布了423 篇原创文章 · 获赞 134 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/105649563
今日推荐