小编Gab*_*enn的帖子

如何检查 bash 命令字符串的逐字字符?

今天早上我在 bash 终端中有这种奇怪的行为:

user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
bash: [: missing «]»
user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
true
Run Code Online (Sandbox Code Playgroud)
  • 第一个命令是从使用 gedit 编辑的脚本粘贴的
  • 第二个是直接在终端中输入的。

经过一番挖掘,我发现删除第 30 个字符(client.conf 和“]”之间的空格)并用空格替换它使命令再次起作用。

我的假设是正确的:命令中出现了一个未知的空白字符,但问题是:

  1. 如何在终端中显示这些字符以便调试命令?更重要的是:
  2. 我怎样才能防止这种情况再次发生?

顺便说一句,我运行的是 Ubuntu 18.04 / 法语,我粘贴命令的脚本位于 USB 驱动器中,并且也可能在 Windows 上进行了编辑。


谢谢你的好答案。坏字符是一个c2 a0不间断空格 UTF-8 字符。How to remove special 'M-BM-' character with sed这个问题有关于该角色的有趣事实。

奇怪的是,剧本竟然没有这个角色。所以我不知道它是从哪里来的。

linux bash gnome-terminal

15
推荐指数
3
解决办法
1724
查看次数

标签 统计

bash ×1

gnome-terminal ×1

linux ×1