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

admin3年前云主机100

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

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

相关文章

企业邮箱注册攻略:从零开始搭建专业邮箱!

随着企业信息化的发展,越来越多的企业开始使用专业的企业邮箱。本文将介绍从零开始搭建企业邮箱的攻略,为初次使用企业邮箱的读者提供帮助。正文:一、选择企业邮箱服务商选择全球知名的企业邮箱服务商可以保证企业...

使用网络文件服务器有哪些好处

网络文件服务器的好处在现今信息时代,文件传输与共享已成为刚需。在此情况下,网络文件服务器的应用越来越受到关注。下面,我们来了解一下网络文件服务器的好处。方便快捷的文件传输与共享文件传输与共享是网络文件...

wordpress机构主题

WordPress机构主题WordPress作为目前最为流行的网页内容管理系统,已经成为机构网站建设的首选。因为在WordPress平台上,有着大量的主题可以选择,其中机构主题是其中比较受欢迎的主题之...

Docker?Desktop常见的几种启动失败问题解决方法

内容介绍报错1,Error:Failed to restart报错2,Error invoking remote method 'desktop-go-backend':[object...

极亿云

什么是极亿云?极亿云是一家互联网技术公司,成立于2017年。公司总部位于中国深圳,目前已在全球拥有超过100个节点,为客户提供高品质的云计算服务。极亿云的产品和服务极亿云提供的主要产品和服务包括:...

appnode怎么样

什么是appnode?Appnode是一种以Node.js为基础的开源应用程序部署框架,它可以帮助用户快速地、安全地部署各种类型的应用程序。Appnode提供了易于使用的界面,可以让你快速进行应用程序...