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

admin3年前云主机49

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

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

相关文章

服务器被入侵需要检查什么

引言随着互联网的普及,服务器成为众多企业必不可少的基础设施。但是,随着网络的日益复杂化,服务器安全问题也变得愈发重要。服务器被入侵不仅会导致数据和信息的泄露,还会破坏业务的稳定性和信誉度。本文将从服务...

宝塔重装数据库会在吗

宝塔重装数据库会在吗?介绍宝塔面板是一款非常实用的Web服务控制面板,不仅可以快速部署Web服务,而且可以方便地管理数据库、域名、SSL等。但是,由于种种原因,有时我们需要重新安装数据库,那么这个操作...

中国CDN企业排名前十强榜单及行业解析

一、CDN企业排名1. 背景介绍中国CDN产业经过多年发展,目前已经成为全球最具活力的市场之一。据统计,2018年全球CDN市场规模达到84.9亿美元,预计到2023年将增至220亿美元。其中,中国市...

VPS元旦促销

什么是VPS虚拟专用服务器(Virtual Private Server,简称VPS)是指通过虚拟化技术将一台物理服务器划分成多个虚拟服务器,在每个虚拟服务器中独立运行操作系统和应用程序。VPS优势相...

ApacheDoris的Bitmap索引和BloomFilter索引使用及注意事项(apache doris)

内容介绍1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引2.1 BloomFilter索引介...

企业建立官网的好处

企业建立官网的好处在如今的数字化时代,企业所拥有的网络形象至关重要。随着越来越多的用户使用网络查找信息和服务,一家企业建立自己的官网已成为必不可少的一步。那么,建立官网对企业有哪些好处呢?一、提升企业...