今天早上我在 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)
经过一番挖掘,我发现删除第 30 个字符(client.conf 和“]”之间的空格)并用空格替换它使命令再次起作用。
我的假设是正确的:命令中出现了一个未知的空白字符,但问题是:
顺便说一句,我运行的是 Ubuntu 18.04 / 法语,我粘贴命令的脚本位于 USB 驱动器中,并且也可能在 Windows 上进行了编辑。
谢谢你的好答案。坏字符是一个c2 a0不间断空格 UTF-8 字符。How to remove special 'M-BM-' character with sed这个问题有关于该角色的有趣事实。
奇怪的是,剧本竟然没有这个角色。所以我不知道它是从哪里来的。