运行shell脚本提示“语法错误: 未预期的文件结尾”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行shell脚本提示“语法错误: 未预期的文件结尾”相关的知识,希望对你有一定的参考价值。

当时正在写一个小需求,shell脚本实现的功能是:通过 read 读入变量实现加减剩除等,而且要判断一个输入的2个变量是否为空,为空值则退出。输入的变量不是数字则退出。

自己编写的代码如下

#! /bin/bash
read -p "Ple input two num:" a b
if [ $ #a -le 0 ] &&
echo "this first number is null"
exit 1

if [ $ #b -le 0 ] &&
echo "this second number is null"
exit 1


expr $a +2 &>/dev/null
revecd_A=$?
expr $b +3 &>/dev/null
revecd_B=$?
if [ $revecd_A -ne 0 -o $revecd_B -ne 0 ];then
echo "ple input two number"
exit 1
fi

echo "a+b=$(($a+$b))"
echo "a-b=$(($a-$b))"
echo "a/b=$(($a/$b))"
echo "a%b=$(($a%$b))"
echo "a**b=$(($a**$b))"

然后运行的时候提示错误

运行shell脚本提示“语法错误:

后来检查发现多了if

运行shell脚本提示“语法错误:

修改正确后代码如下

#! /bin/bash
read -p "Ple input two num:" a b
[ $#a -le 0 ] &&
echo "this first number is null"
exit 1

[ $#b -le 0 ] &&
echo "this second number is null"
exit 1


expr $a + 1 &>/dev/null
revecd_A=$?
expr $b + 1 &>/dev/null
revecd_B=$?
if [ $revecd_A -ne 0 -o $revecd_B -ne 0 ];then
echo "not unmber,ple input again"
exit 1
fi

echo "a+b=$(($a+$b))"
echo "a-b=$(($a-$b))"
echo "a/b=$(($a/$b))"
echo "a%b=$(($a%$b))"
echo "a**b=$(($a**$b))"

运行shell脚本提示“语法错误:

验证结果:

运行shell脚本提示“语法错误:

反思总结:

1.

if语句有相应的语法搭配:如  

(1)
if [ command ].... ;then
符合条件执行语句
fi

(2)
if [command]
符合条件执行语句
else
否则执行什么
fi
(3)
if [command];then
符合条件执行语句
elif [command];then
如果符合这个条件,则执行语句
else
否则执行这个语句
fi

2.expr用于整数计算

如何expr 1+b,因为b不是整数,所以相加后运行结果就会出现错误,执行结果返回不是0.

根据执行成功返回结果是0进行判断 1和输入的传参变量是否是整数。


$?  获取执行上一个指令的执行状态返回值,0为成功,非零失败。


慢慢与你并肩


以上是关于运行shell脚本提示“语法错误: 未预期的文件结尾”的主要内容,如果未能解决你的问题,请参考以下文章

运行shell脚本提示syntax error near unexpected token `$'do ''

UNIX 什么是 Shell 脚本

运行shell脚本提示“语法错误: 未预期的文件结尾”

编写一个linuxshell脚本,运行它提示输入你的姓名,当你输入完毕之后程序再次将你输入的结果显示在屏幕上。

Centos7 Shell脚本提示参数太多

如何实现在运行shell程序时添加选项-h能提示程序的用法?