我有一个脚本,绝对 100%必须以这种荒谬的方式完成:
echo $'\150\151\073\145\143\150\157' $'\171\141\171'
(未编码:echo hi;echo yay)
问题是 echo 后面的所有内容都被视为参数,因此分号和第二个 echo 命令也会被输出。有没有办法让 shell 真正解析分号并拆分这两个命令?
答案1
您可以尝试在 '\073' 之前使用一个 NULL 字符:
echo $'\150\151\0\073\145\143\150\157' $'\171\141\171
这样 shell 就会解析 ';'
输出将是:
hi yay
并不是
hi
yay
答案2
eval
?反引号?每行之间按回车键 sh -c
??? $()
完全是别的?不知道为什么你必须用这种倒退的方式来做,我们真的不能提供很多替代方案,因为我们不知道你能使用。
答案3
由于我没有登录,因此不允许我回复评论。
无论如何,所有内容都必须用八进制字符输入在一行中。没有 `、没有 $(、没有回车符、也没有 eval。要么是八进制,要么什么都没有。
答案4
... 我也无法编辑之前的消息。
我试过使用空字节,但它只是终止该字符串——而不是 echo 命令。您的示例不会产生两个单独的命令,而会产生一个命令。这就是我想要的两个命令。