51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

shell 编程中- 文件判断- 字符串比较 -正则比较

shell 编程中 文件判断

1文件判断

语法结构:
test 判断符 文件或者目录
[ 判断符 文件或者目录 ]

判断符:
-f 文件存在则为真
-d 目录存在则为真
-e 文件存在则为真(任意类型的文件)
-r 文件可读为真
-w 文件可写为真
-x 文件可执行为真

test -f /etc/passwd && echo 为真 || echo 为假

[ -f /etc/passwd ] && echo 为真 || echo 为假

案例: -d
如果目录不存在则创建

[ -d 10.0.0.8_2022_02_11 ] || mkdir 10.0.0.8_2022_02_11


 [ -d /etc ] && mkdir /opt/`hostname`_`date +%F` && tar zcvf /opt/`hostname`_`date +%F`/etc.tar.gz /etc

案例: -f

如果有脚本变量, 则先创建一下,方便 父shell调用

[root@web00 day02]# cat env.sh 
num1=100
num2=200
num3=300

cat test.sh
#!/bin/bash
[ -f /server/scripts/day02/env.sh ] && . /server/scripts/day02/env.sh
echo $num1+$num2=$[$num1+$num2]

2字符串比较

只有 等于或者不等于 这2种

[root@baimeidashu ~]#[ root != root ] && echo 等于 || echo 不等于
不等于

[root@baimeidashu ~]#[ root == root ] && echo 等于 || echo  不等于
等于

3 正则比较

[root@baimeidashu ~]#[ root != root ] && echo 等于 || echo 不等于
不等于
[root@baimeidashu ~]#[ root == root ] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ roo ]] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ r ]] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ ^r ]] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ $t ]] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ [a-z] ]] && echo 等于 || echo  不等于
等于
[root@baimeidashu ~]#[[ root =~ [0-9] ]] && echo 等于 || echo  不等于
不等于
[root@baimeidashu ~]#[[ 399 =~ [0-9] ]] && echo 等于 || echo  不等于
等于

案例:

案例: 输入的 姓名必须是 字母, 年龄必须是大于18 小于100

#!/bin/bash
read -p "请输入你的姓名:"  name
echo $name
if [[ ! $name =~ ^[a-z]+$ ]]
then
   echo "请输入正确的姓名不能有数字"
   exit
fi

read -p "请输入你的年龄:" age
if [[ ! $age =~ ^[0-9]+$ ]]
then
    echo "请输入正确的年龄,必须是数字"
    exit

elif  ! [  $age -gt 18 -a $age -lt 100 ]
then
    echo "年龄必须大于18 小于100"
    exit



echo $age

f

欢迎来撩 :shell 编程从0到1

赞(2)
未经允许不得转载:工具盒子 » shell 编程中- 文件判断- 字符串比较 -正则比较