为什么sh会意外地产生乱码输出?

时间:2016-07-01 06:50:46

标签: sh

当我使用-x选项运行shell脚本时,我会获得有关脚本的更多运行时调试信息,但有时此选项会生成乱码输出,如下所示

$ sh -xc 'echo "中文"'
+ echo $'中?\226\207'
中文

但如果我改变一点这个脚本,比如在文本的开头加一个空格,

$ sh -xc 'echo " 中文"'
+ echo ' 中文'
 中文

输出绝对正确!你会发现$符号在后一个脚本中消失了。如果我将空格替换为符号#{}[]()&~^*\;<>|之一,我也可以获得类似的正确输出。那么sh -x会发生什么?任何人都可以向我解释一下吗?提前谢谢!

0 个答案:

没有答案