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

admin3年前云主机78

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

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

相关文章

探秘韩国CN2服务器:速度、稳定性与优劣分析

一、网络质量与速度 众所周知,韩国的互联网基础设施非常发达,这也使得韩国成为了高速网络的代名词。CN2服务器是基于该高速网络的服务器之一。从网络质量和速度的角度来看,韩国CN2服务器在全球服务器中是非...

惠州vps主机

什么是惠州vps主机?VPS主机是虚拟专用服务器的缩写,是指一种通过分割物理服务器资源来模拟多个虚拟服务器的虚拟化技术。而惠州vps主机则是指提供VPS主机服务的位于惠州市的服务商,通常提供高性能、高...

Exploring the Impact of .org Domains in Today's Online Landscape

一、历史自互联网问世以来,域名就已成为人们身份的代表。 .org 域名最初是为非营利组织特别设计的。随着时间的推移, .org 域名逐渐成为了匿名、开源和民主化中意识形态的象征。它包含了许多代表权利和...

chatgpt怎么安装,安装chatgpt的方法

ChatGPT是什么?ChatGPT是一个基于GPT-2的开源聊天机器人项目,由一群开源爱好者共同打造而成。该聊天机器人能够进行智能问答、闲聊等多种功能。并且,ChatGPT将会不断更新,以便更好地适...

Linux centos系统的IP设置配置方法

今天在vmware server上装了个centos-4.7(免费的redhat,是小红帽的的克隆版本,跟小红帽的版本是对应的),其中ip安装时没设好,一般Linux centos的网卡IP地址是存放...

香港GPU服务器定义和理解?香港GPU服务器租用价格多少钱?

香港GPU服务器定义和理解GPU服务器,简单来说,GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务,我们提供和标准云服务器一致的管理方式。出色的图形...