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

bash – 在字符串中命令替换复合命令

发布时间:2020-12-15 20:59:44 所属栏目:安全 来源:网络整理
导读:arg1=$(printf win printf 32)echo $arg1contents='printf win printf 32'arg1=$($contents)echo $arg1arg1=$( { eval $contents; } )echo $arg1 结果是: win32winwin32 为什么$($内容)不起作用?可以假设命令替换通过插入声明的命令的stdout来工作……?
arg1=$(printf win && printf 32)
echo $arg1
contents='printf win && printf 32'
arg1=$($contents)
echo $arg1
arg1=$( { eval $contents; } )
echo $arg1

结果是:

win32
win
win32

为什么$($内容)不起作用?可以假设命令替换通过插入声明的命令的stdout来工作……?

此外,当内容=’echo win&& echo 32’它返回win&&回声32

解决方法

因为参数替换发生在逻辑运算符解析之后.

Bash不知道有&&,所以printf win&& printf 32解释如下:

argv[0]: printf
argv[1]: win
argv[2]: &&
argv[3]: printf
argv[4]: 32

printf忽略以argv [2]开头的所有参数,因为argv [1]不包含格式字符串.

(编辑:李大同)

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

    推荐文章
      热点阅读