如何在bash eval字符串中使用十六进制转义字符?

3

我想执行一个包含十六进制转义序列的字符串中的命令,例如\x20

例如,如果字符串是ls\x20/usr/bin/,那么我想运行命令ls /usr/bin/

我该如何做到这一点?

1个回答

3

好的,可读性更高的方法包含3行:

CMD="ls\x20/usr/bin/"
OUTPUT="$(echo -e $CMD)"
eval "${OUTPUT}"

使用echo -e命令可以将字符串转换,并把转换后的字符串存储在OUTPUT中。然后只需要使用eval :)

希望这会对您有所帮助。

一行代码(就像您说的那样):

$(echo -e "ls\x20/usr/bin/")

注意:这种方法是一行代码,但并不适用于所有情况..例如,它不能与别名一起使用。

嗨I-V,那正是我所需要的。非常感谢。 :) - cie
它只需要一行代码就可以运行。$(echo -e 'ls\x20/usr/bin') - cie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接