Bash 中 Syntax Error Near Unexpected Token 错误
本文演示如何识别和更正由于 Bash 脚本中的不可见字符而导致的意外令牌语法错误。
Bash 中 Syntax Error Near Unexpected Token 错误
有时,语法上看起来完美无缺的 Bash 脚本不起作用。 你会得到一个模糊的语法错误,这也无济于事。
假设您有一些代码,例如:
#!/bin/bash
while :
do
echo "This will repeat every second until you press CTRL + C"
sleep 1
done
从语法上讲,上面的代码是正确的。 但是,一些不可见的字符可能会使代码在 Linux 中在句法上不可读。
我们如何确认是否是不可见字符导致了问题? 我们如何解决这个问题?
如前几节所述,解决方案很简单。
找出问题
假设 filename.sh 是您为 Bash 脚本保存的文件。
打开您的终端,然后导航到文件位置。 然后,在终端中运行以下命令。
cat -v filename.sh
可能表示回车或不间断空格的不可见字符应显示为 ^M、M-BM-
或 M-
。 如果任何其他奇怪的字符进入您的文件,您也应该能够看到它们。
在我们的案例中,我们有几个选项可以解决我们的问题。
使用控制台命令删除 Windows 换行符
如果你有一个名为 filename.sh 的有问题的文件,我们可以使用以下命令将更正后的内容保存到名为 correctedFile.sh 的文件中。
tr -d '\r' < filename.sh > correctedFile.sh
自动将非 UNIX 文件转换为 UNIX 友好格式
为此,您需要一个名为 dos2unix 的实用程序。 如果您使用 apt 作为包管理器,则可以使用以下命令安装 dos2unix:
sudo apt install dos2unix
或者,如果您使用的是基于 arch 的发行版,则可以从 AUR 安装 dos2unix。
要将文件转换为 UNIX 友好格式,请打开终端,然后导航到包含所需文件的文件夹。 我们将考虑一个名为 filename.sh 的文件。
在您的终端中输入以下命令。
dos2unix filename.sh
上面的命令会将您的文件转换为 UNIX 友好的格式。 这样,问题就解决了。
希望您的 Bash 脚本现在可以正常运行。 如果它仍然没有运行,你很可能遇到了实际的语法问题。
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。