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

admin3年前云主机134

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

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

相关文章

免备案服务器有哪些优势

什么是备案服务器?备案服务器是指在网站业务运营之前,需要进行备案的服务器。备案是指在国家相关部门注册并备案规定的网站信息。备案过程会涉及网络信息安全、内容合法性等多个方面的审查。因此,在备案服务器上进...

六安网站开发

什么是六安网站开发?六安网站开发是利用计算机语言及相关技术,对企业、个人提供网站策划、设计、制作、发布及维护服务的过程。它可以帮助企业及个人更好地展示形象,传播信息,拓展业务,树立品牌形象。为什么要进...

APP服务器怎么选择配置(选择适合APP服务器配置的关键)

一、性能在选择APP服务器配置时,性能是最重要的考虑因素之一。可以从以下几个方面来考虑:1.1 CPU:APP服务器需要有足够的CPU资源来保证处理高并发请求时的响应速度。选择多核心高频的CPU可以提...

云服务器ecs-快照有什么用(ECS快照的作用:深度解析)

一、数据安全性保障云服务器ecs-快照能够为用户的数据安全性提供强大的保障。一方面,云服务器ecs-快照能够定期对用户数据进行自动备份,以便在出现数据丢失或被篡改等情况时进行恢复。另一方面,云服务器e...

ICP证办理全流程详解:手把手教你办理ICP证

ICP证是指互联网信息服务提供商备案信息的身份认证证明的简称。在中国互联网领域,运营网站、建设网站等依赖于此证书。本文将详细介绍ICP证办理的全流程,包括申请、材料准备、审核等方面的具体步骤和注意事项...

微软windows11安装

微软Windows 11安装Windows 11系统介绍Windows 11是微软新推出的一款操作系统,侧重于提升用户体验和操作效率。该系统引入了全新的界面设计和更加智能的功能,如桌面实时磁贴和Sna...