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]不包含格式字符串.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。