*NIX shell 脚本中八进制值引用的字符--如何对它们进行解析?

*NIX shell 脚本中八进制值引用的字符--如何对它们进行解析?

我有一个脚本,绝对 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 命令。您的示例不会产生两个单独的命令,而会产生一个命令。这就是我想要的两个命令。

相关内容