Linux bash文件中出现意外的eof错误
我正在创建一个小程序,它做一些简单的数学运算,但无法运行它。它只是输出“意外的文件结尾”。我似乎找不到错误Linux bash文件中出现意外的eof错误,linux,bash,scripting,Linux,Bash,Scripting,我正在创建一个小程序,它做一些简单的数学运算,但无法运行它。它只是输出“意外的文件结尾”。我似乎找不到错误 #!/bin/bash until [ $second_num -ne 0 ]; do echo "Enter number 1:" read first_num echo "Enter number 2:" read second_num echo "Cannot divide by 0. Start over." done result=0
#!/bin/bash
until [ $second_num -ne 0 ]; do
echo "Enter number 1:"
read first_num
echo "Enter number 2:"
read second_num
echo "Cannot divide by 0. Start over."
done
result=0
if [ $first_num -ne 999 && $second_num -ne 999 ]; then
let result=$((first_num/second_num))
echo $result
echo "Program finished!"
else
echo "You have exited the program."
exit 0
fi
number=1
while [ $number -lt 100 ]; do
echo $number
let number=$(( $number % 5 ))
echo $number >> sample.txt
done
乍一看,我发现您的脚本有两个问题:
您没有初始化直到[$second_num-ne 0];执行
,因此您试图将0与零进行比较$second\u num
if[$first_num-ne 999&$second_num-ne 999];然后
是一个。(单个)方括号内两个表达式的AND运算符为&&
-a
您没有初始化直到[$second_num-ne 0];执行
,因此您试图将0与零进行比较$second\u num
if[$first_num-ne 999&$second_num-ne 999];然后
是一个。(单个)方括号内两个表达式的AND运算符为&&
-a
- 我不知道您想做什么,但是下面的代码应该可以正常工作,没有任何错误
#!/bin/bash
until [ $second_num -ne 0 ]; do
echo "Enter number 1:"
read first_num
echo "Enter number 2:"
read second_num
echo "Cannot divide by 0. Start over."
done
result=0
if [ "$first_num" -ne "999" -a "$second_num" -ne "999" ];
then
let result=$(($first_num/$second_num))
echo $result
echo "Program finished!"
else
echo "You have exited the program."
exit 0
fi
number=1
while [ $number -lt 100 ]; do
echo $number
let number=$(( $number % 5 ))
echo $number >> sample.txt
done
我不知道您想做什么,但是下面的代码应该可以正常工作,没有任何错误
#!/bin/bash
until [ $second_num -ne 0 ]; do
echo "Enter number 1:"
read first_num
echo "Enter number 2:"
read second_num
echo "Cannot divide by 0. Start over."
done
result=0
if [ "$first_num" -ne "999" -a "$second_num" -ne "999" ];
then
let result=$(($first_num/$second_num))
echo $result
echo "Program finished!"
else
echo "You have exited the program."
exit 0
fi
number=1
while [ $number -lt 100 ]; do
echo $number
let number=$(( $number % 5 ))
echo $number >> sample.txt
done
我在bash版本4下执行,没有问题(没有语法错误), 但是一些语义错误,变量second_num未定义,&&在if语句中 第3行:[:-ne:应为一元运算符 输入数字1: 34 输入数字2: 54 不能除以0。请重新开始。 第12行:[:缺少“]” 您已退出该程序
再次向您发送脚本我在bash版本4下执行,没有问题(没有语法错误), 但是一些语义错误,变量second_num未定义,&&在if语句中 第3行:[:-ne:应为一元运算符 输入数字1: 34 输入数字2: 54 不能除以0。请重新开始。 第12行:[:缺少“]” 您已退出该程序
再次向您发送脚本学习使用:
sh-x
和sh-nv
来调试此脚本。通常,意外的EOF意味着引号不匹配或类似的问题,或者循环构造不完整。不清楚为什么在不测试任何内容的情况下报告不能除以0。我怀疑您显示的代码是否正确不是你要调试的代码;你显示的代码没有给出你说的错误。中的&&
如果应该写-a
-这是一个缺陷。学会使用:sh-x
和sh-nv
来调试。通常,意外的EOF意味着引号不匹配或类似的问题,或者不完整的循环构造。不清楚为什么在不测试任何内容的情况下,您报告的不能除以0
。我怀疑您显示的代码不是您试图调试的代码;您显示的代码没有给出您所说的错误。if
中的&
应该编写-a
,这是一个缺陷。它将将运行,但由于未初始化的$second\u num
,它仍将显示警告。它将运行,但由于未初始化的$second\u num
,它仍将显示警告。