我最近安装了新版本的 Debian。我创建了这个简单的脚本:
#!/bin/bash
print_something () {
echo Hello I am a function
}
print_something
print_something
但是,当我发出 bash test.sh
时,会显示此错误:
test.sh: line 3: $'\r': command not found
test.sh: line 4: syntax error near unexpected token `$'{\r''
'est.sh: line 4: `print_something () {
我做错了什么? 非常感谢!
最佳答案
诊断:
- Unix 实用程序通常只希望行结尾为
\n
,并且通常会破坏或显示具有 Windows 样式\r\n
的文件的意外行为和输出行结尾 - 正如bash
在这里所做的那样。 - 包含字符串
\r
的错误消息表明存在此类 Windows 样式的行结尾。 - 将文件传递给
cat -v
并在输出行末尾检查^M
的输出(这就是\r
字符。表示)是一种按需检查文件中 Windows 样式行结尾的方法。
修复:
- 要将 Windows 风格的行结尾转换为 Unix 风格的文件:
- 确保您用来创建与 Unix 实用程序一起使用的 shell 脚本/文件的编辑器配置为使用 Unix 样式的行结尾。
关于bash - 函数在 bash 脚本中不起作用 - 错误消息与 '\r' 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30151725/