shell脚本报错

shell脚本报错

我有一个小的 shell 脚本,它抛出错误:

文件意外结束

脚本如下:

#!
if [  t -eq  1  ]
then
 echo " TEST1 "
else
echo " TEST LAST LOOP "
fi

答案1

脚本中没有任何内容应该给出该错误。如果您使用 运行脚本sh ./script.sh,它将产生

 TEST LAST LOOP 

作为输出。如果与bash ./script.sh您一起运行它,将得到相同的输出,但会出现额外的“预期整数表达式”错误,因为t不是整数(如果您与 一起运行,sh如果您sh是由 实现的,则也可能会发生这种情况bash)。如果您使用 运行它./script.sh,shell 很可能会抱怨“没有这样的文件或目录”,因为您没有添加正确的#!- 行。

在此脚本中,您可以使用#!/bin/sh-line,#!因为您仅使用标准 POSIX 功能。

测试[ t -eq 1 ]永远不会成立,因为t(字符)不是整数。如果您正在设置多变的 t到某处的整数,[ "$t" -eq 1 ]在测试中使用。


我能让 shell 说“意外的文件结束”的唯一方法是将脚本转换为 DOS 文本文件并使用bash.

如果出现此错误,则脚本文件可能是 DOS 文本文件(可能是由于在 Windows 计算机上创建的)。您应该运行dos2unix脚本。

相关问题dos2unix

答案2

缺少 shebang 行#!/bin/sh且未t定义

答案3

  • 替换#!#!/bin/sh或 run sh ./script.sh,并且必须将 t 设置为整数$tnot t

相关内容