我有一个抛出错误的小shell脚本:
意外的文件结尾
脚本如下:
#!
if [ t -eq 1 ]
then
echo " TEST1 "
else
echo " TEST LAST LOOP "
fi
Run Code Online (Sandbox Code Playgroud)
脚本中没有任何内容应该给出该错误。如果你用 运行脚本sh ./script.sh,它会产生
TEST LAST LOOP
Run Code Online (Sandbox Code Playgroud)
作为输出。如果与bash ./script.sh您一起运行它,您将获得相同的输出,但会出现一个额外的“预期的整数表达式”错误,因为t它不是整数(如果您使用sh它sh来实现,这也可能发生bash)。如果你用 运行它./script.sh,shell 很可能会抱怨“没有这样的文件或目录”,因为你没有添加适当的#!-line。
在这个脚本中,你可以使用#!/bin/sh的#!系法,你只使用标准的POSIX功能。
测试[ t -eq 1 ]永远不会为真,因为t(字符)不是整数。如果您在某处将变量 设置为t整数,请[ "$t" -eq 1 ]在测试中使用。
我可以让 shell 说出“意外的文件结尾”的唯一方法是将脚本转换为 DOS 文本文件并使用bash.
如果出现此错误,则脚本文件可能是 DOS 文本文件(可能是由于在 Windows 机器上创建的)。您应该dos2unix在脚本上运行。
请参阅与 相关的问题dos2unix。