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