避免shell脚本删除文件或目录,由于变量不存在,导致从根目录或者当前目录开始删的方法
如果app_path变量没有值,将“UNSET”赋值给path
path=${app_path:-“UNSET”}
[ $path != “UNSET” ] && rm -rf $path/*.jpg
[root@mysql_5 ~]# ls /tmp/
10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log i.log
[root@mysql_5 ~]# cat rm.sh
#/bin/bash
rm -f ${path=/tmp}/*.log
echo “remove log is ok !”
[root@mysql_5 ~]# sh -x rm.sh
- rm -f /tmp/10.log /tmp/1.log /tmp/2.log /tmp/3.log /tmp/4.log /tmp/5.log /tmp/6.log /tmp/7.log /tmp/8.log /tmp/9.log /tmp/i.log
- echo ‘remove log is ok !’
remove log is ok !
[root@mysql_5 ~]# ls /tmp
或者:
如果app_path变量没有值,则退出shell并输出:parameter null or not set
path=${app_path:?}
rm -rf $path/*.jpg
[root@mysql_5 ~]# ls /tmp/
10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log i.log
[root@mysql_5 ~]# cat rm.sh
#/bin/bash
rm -f ${path:?}/*.log
echo “remove log is ok !”
[root@mysql_5 ~]# sh -x rm.sh
rm.sh: line 2: path: parameter null or not set
[root@mysql_5 ~]# ./rm.sh
./rm.sh: line 2: path: parameter null or not set
上面两种方法都可以避免变量不存在导致误删除的情况。