我有一个小的 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
脚本。
答案2
缺少 shebang 行#!/bin/sh
且未t
定义
答案3
- 替换
#!
为#!/bin/sh
或 runsh ./script.sh
,并且必须将 t 设置为整数$t
nott
。