bash脚本中使用rm命令时的致命误区(bash 脚本)

admin3年前云主机61

测试的shell为bash:
如果在shell脚本中如果使用了一个没有声明的变量,或者是一个声明了但是没有赋值的变量,那么此时脚本不会报错,引用的这个变量也会默认为空,此时,如果脚本中的rm命令的参数刚好使用了这个变量,那么可能会造成不可估计的严重后果,以下为测试场景(注意:下面的脚本不要复制到你的系统上面执行,否则系统就挂了):

场景一:
#!/bin/bash
#
DIRPATH=
rm -rf $DIRPATH/bin/  #使用了一个没有初始化的变量DIRPATH

场景二:
#!/bin/bash
#
rm -rf $DIRPATH/bin/  #使用了一个没有定义的变量DIRPATH

上面两个执行结果是一样的:脚本没报错,/bin目录被删除了,本来是打算删除某个目录下的bin目录,但是却把系统根目录下的bin目录删掉了,那么系统也就挂了,还有一种更加致命的情况,那就是执行rm -rf $DIRPATH/,DIRPATH变量没有声明或者声明了但是没有赋值,那么你的系统根目录就被删掉,后果可想而知!


避免的方法:
提醒一下,在shell脚本中使用到rm命令并且rm命令的参数中有带有变量时,需要特别注意变量名是否与上面声明的保持一致,还有一种做法就是:在引用变量的时候使用下面的方法,可以确保变量不会为空。

比如上面的DIRPATH变量,在引用此变量作为rm的参数的时候,使用如下方式:

rm -rf ${DIRPATH:-default}/bin/
${DIRPATH:-default}:表示如果变量DIRPATH没有被声明或者已经声明,但是赋值为空,那么就使用默认值default,否则就使用DIRPATH初始化的值

关于shell变量的操作,请看这篇 《bash脚本中使用rm命令时的致命误区(bash 脚本)》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

怎么选择和租赁美国服务器?

怎么选择和租赁美国服务器?选择和租赁美国服务器时,应注意以下几点:了解自己的需求:在选择租赁服务器之前,需要了解自己的需求,包括所需的带宽、存储空间、访问流量、配置要求等等。只有了解自己的需求,才能选...

aspnet虚拟主机租用要注意哪些事项(aspnet虚拟主机租用注意事项)

一、选择虚拟主机的品牌和服务商选择虚拟主机品牌和服务商是使用虚拟主机的第一步。在选择虚拟主机品牌时,我们需要考虑产品的稳定性和可靠性,注重口碑和客户评价。同时,在选择虚拟主机服务商时,我们需要考虑服务...

debian10

Debian 10: 稳定、高效的操作系统介绍Debian 10Debian 10(代号:buster)是一款免费、开源、稳定的操作系统,由全球开发人员合作开发和维护。 Debian 10的发布已经迎...

阿里云ecs共享型n4评测

阿里云ECS共享型N4评测阿里云是一家提供云计算服务的公司,它的ECS(弹性计算服务)是其中一个主要产品。其中N4共享型实例是为多租户应用场景设计的虚拟机实例,可用于各种不同的应用需求,包括托管网站,...

ip地址意思

关于IP地址的解释IP地址是Internet Protocol Address(互联网协议地址)的缩写,是用于在互联网上唯一标识计算机或其他网络设备的地址标识符。它是由32位二进制数(IPv4)或12...

免备案jsp空间租用怎么选择(jsp空间免费申请)

免备案jsp空间租用选择的方法:1、根据自身需求选择合适的jsp空间配置,保证服务器的性能;2、选择靠谱的空间商,保证服务器的安全性和网站的打开速度;3、选择稳定性好的jsp空间租用,有利于后期网站发...