我想从字符串执行bash脚本,输入"echo TEST!"为例。所以我可以这样写:
eval "echo TEST!"
问题是,字符串在UTF-16LE中音译以缩短高尔夫目的的字符计数(它不会缩短字节计数,但在给定的上下文中它不是问题),所以我的实际字符串是"捥潨卅⅔"。
我知道如何将它音译回来,例如,如果我这样做:
echo 捥潨吠卅⅔|iconv -tUCS2
它打印:
回波测试!
但是当我想从字符串执行时,它不起作用。我尝试了这个例子:
eval 捥潨吠卅⅔|iconv -tUCS2
但是失败了。
有人能帮帮我吗?
注意:我通常不使用Bash,所以如果这个问题真的很愚蠢,我很抱歉。
您可以使用命令展开来捕获eval的字符串:
eval "$(echo 捥潨吠卅⅔|iconv -tUCS2)"
如果您正在打高尔夫球,您可以使用backtics进一步缩短它,这里是字符串,如果结果命令不包含shell语法,您可以跳过eval:
`iconv -tUCS2<<<捥潨吠卅⅔`
它失败了,因为eval
期望执行命令或表达式,而您必须使用echo -e
来将文本管道传输到iconv
。