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

admin3年前云主机40

测试的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 脚本)》来自互联网同行内容,若有侵权,请联系我们删除!

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

相关文章

Linux服务器上用iScanner删除网页恶意代码的方法(linux服务器怎么用)

第一步:安装首先要确保服务器上已经安装了Ruby复制代码代码如下:#ruby -v //查看ruby的版本信息如果服务器上没有安装,可以通过yum或者apt-get安装rub...

BGP多线高防服务器的优势有哪些?扬州多线高防服务器租用配置哪个好?

随着金融职业和游戏职业的大力发展和鼓起,BGP多线高防服务器的运用也越来越广泛了,那么BGP多线高防服务器这个名词相信我们多少都有触摸过,那么BGP多线高防服务器和一般高防服务器有什么区别了?BGP多...

日本多IP服务器的特点?租用日本多ip服务器配置推荐?

由于业务的需要,我们有些项目是需要用到日本多IP服务器的。想比香港或者东南亚的其他地区的多IP服务器,日本多IP服务器拥有较大的带宽。而且在物理距离和辐射的用户群中海外出口网络也是比较优秀的。日本多I...

如何选择适合的贵州服务器租用服务?

在如今的互联网时代,服务器已经成为各类企业不可或缺的重要设备,而服务器租用服务也成为了一种方便、快捷、高效、低成本的解决方案。本文将从价格、配置、服务和安全这四个方面,详细阐述如何选择适合的贵州服务器...

企业购买免备案主机空间要注意什么

企业购买免备案主机空间要注意什么随着网站建设的需求不断增长,越来越多的企业开始购买免备案的主机空间。但是在购买之前,企业需要注意以下几点:确定需求和预算在购买主机空间之前,企业需要先确定自己的需求和预...

好云优惠码

好云优惠码介绍及使用方法好云优惠码是一种优惠方式,可以让购物者在购买商品时减少一定的购物费用。好云优惠码通过提供给用户一个特定的代码,购物者在结算时消费的钱数即可打折。如何获取好云优惠码?获取好云优惠...