如何在Bash中执行经UTF-16LE转码的脚本字符串并正常运行
问题原因
你写的命令执行顺序错误:eval 捥潨吠卅⅔|iconv -tUCS2会先把未转码的乱码字符串直接传给eval执行,执行失败后的输出才会传给iconv转码,自然达不到预期。你需要先完成转码得到正常的命令字符串,再交给eval执行。
正确写法
使用命令替换先执行转码逻辑,将转码后的结果作为eval的入参即可:
eval "$(echo 捥潨吠卅⅔|iconv -tUCS2)"
如果是为了代码高尔夫压缩字符数,可以去掉双引号和多余空格,精简为:
eval $(echo 捥潨吠卅⅔|iconv -tUCS2)
补充说明
如果转码后的命令包含空格、通配符等特殊字符,保留双引号包裹命令替换的结果,可以避免shell提前拆分字符串导致的执行异常。
内容的提问来源于stack exchange,提问作者Inigoo Montoyaa
相关产品推荐
相关产品推荐

