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

admin3年前云主机45

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

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

相关文章

10万ip流量

什么是10万ip流量?10万ip流量是指一个网页、网站或网络应用程序的访问量,即不同的IP地址在给定时间内访问该网站的次数。一般情况下,网站流量越高,代表着该网站越受欢迎,对网站所有者来说,也意味着更...

便宜的通配符证书

便宜的通配符证书随着现代技术的不断发展,各种互联网应用的兴起,网络安全问题日益严重,通配符证书在互联网安全方面起着不可替代的作用。但通配符证书往往价格昂贵,对于许多中小企业和个人用户来说难以承受。那么...

eurobyte

什么是EurobyteEurobyte是一家投资于国际物流和供应链管理技术的公司。公司总部位于荷兰,并在欧洲和亚洲建有分支机构。公司的主要业务包括提供物流运输、订单管理、库存管理和供应链咨询服务。Eu...

为何不使用香港服务器:广告联盟不宜使用的原因

一、政治因素香港主权移交后的政治环境一直不稳定,金融风险、社会动荡、政治不确定性都给香港市场带来了影响。此外,香港与中国大陆的关系也面临着种种困难,例如最近的反送中示威活动引发的对若干法案的质疑,整个...

服务器域名解析错误如何解决

1. 问题简介当您尝试访问网站时,如果遇到“服务器域名解析错误”的问题,意味着浏览器无法找到您正在尝试访问的网站的IP地址。这通常是因为域名解析器无法将域名解析为正确的IP地址。2. 检查您的连接最常...

php.ini修改

如何修改php.ini文件什么是php.ini文件php.ini文件是PHP的主配置文件,它包含了PHP的各种配置选项。在PHP运行时,它会读取php.ini文件,并根据其内容来配置PHP,以满足开发...