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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |