加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如果设置了变量,则运行命令的简短方法

发布时间:2020-12-15 22:15:29 所属栏目:安全 来源:网络整理
导读:这是我刚刚发现的一个黑客攻击: DEBUG=true$DEBUG echo "Hello" 这恰好是有效的,因为true是一个返回0的实际命令,而操作符很满意: ? true? echo $?0 如果设置了一个变量,是否有一种非hackish方式执行一段代码,除了空字符串之外的任何值?像这样的东西,但作
这是我刚刚发现的一个黑客攻击:

DEBUG=true
$DEBUG && echo "Hello"

这恰好是有效的,因为true是一个返回0的实际命令,而&&操作符很满意:

? true
? echo $?
0

如果设置了一个变量,是否有一种非hackish方式执行一段代码,除了空字符串之外的任何值?像这样的东西,但作为一个可读的单行(如上所述):

myvar="ggg"
if [ "$myvar" != "" ] ; then echo "Hello" ; fi

解决方法

不要依赖变量的值来获得可执行值(以及您想要执行的值),而是定义一个只检查值是否已设置的函数.

debug () [[ -v DEBUG ]]

debug && echo "Hello"

如果设置了DEBUG,甚至设置为空字符串,则调试将成功并执行以下命令.

如果未设置DEBUG并且您希望脚本运行调试命令,则只需将其调用为

DEBUG= ./myscript

如果设置了DEBUG,则可以先取消设置.

unset DEBUG
./myscript

如果DEBUG的值因任何原因确实很重要,那么你可以测试它是否具有非空值而不是使用-v:

debug () [[ -n $DEBUG ]]

要在调试模式下运行脚本,请选择任意非空值

DEBUG=1 ./myscript

要在“真实”模式下运行脚本,即使在您的环境中当前设置了DEBUG,请使用

DEBUG= ./myscript

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读