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

admin3年前云主机99

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

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

相关文章

如何选择适合的香港服务器提供商?

随着互联网的不断发展,越来越多的公司和个人都需要在互联网上拥有自己的网站或应用程序,香港服务器提供商成为人们的首选。但如何选择适合的香港服务器提供商是一个值得思考的问题。本文将从四个方面探讨如何选择适...

如何解决CentOS虚拟机克隆后无法上网问题(centos 虚拟化)

如何解决CentOS虚拟机克隆后无法上网问题?一、问题描述CentOS虚拟机克隆后,由于网卡信息不一致的问题,导致不能上网或者执行“sercice network restart”命令失败[root@...

基础网络产品

什么是基础网络产品?基础网络产品是指构成互联网基础架构的各种网络设备、软件和服务。这些产品可以被整合到各种应用程序中,从而提供互联网服务。基础网络产品是互联网应用的基础,涉及到多个领域的技术,包括网络...

消除香港服务器网站访问障碍:解决国内延迟高、网速慢问题

随着互联网的发展,越来越多的人开始关注网络访问的速度和稳定性问题。由于众所周知的原因,国内访问国外服务器时往往会遇到延迟高、网速慢等问题,使得许多国外的网站、应用和服务在中国难以畅通地访问。本文旨在介...

永久免费云电脑

云电脑的背景随着科技的不断进步,计算机的日常使用场景越来越丰富。而在过去,用户只能通过购买一套能够满足自己需求的电脑,才可体验计算机的魅力。但现在,云技术的发展,给我们带来了一种新的计算方式——云电脑...

青岛服务器租用费用大概多少钱?

青岛服务器租用费用大概多少钱?青岛服务器租用费用会受到以下因素的影响:服务器配置-不同的服务器配置以及硬件规格会有不同的价格。一般来说,处理器、内存、存储和带宽等越高的服务器,租用费用就越高。租用时长...