迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Bash 中 Syntax Error Near Unexpected Token 错误

作者:迹忆客 最近更新:2023/06/09 浏览次数:

本文演示如何识别和更正由于 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 脚本现在可以正常运行。 如果它仍然没有运行,你很可能遇到了实际的语法问题。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便