![为什么这个简单的 bash 脚本会在 if/then/else 上抛出错误?](https://linux22.com/image/62286/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%20bash%20%E8%84%9A%E6%9C%AC%E4%BC%9A%E5%9C%A8%20if%2Fthen%2Felse%20%E4%B8%8A%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF%EF%BC%9F%20.png)
如果我尝试运行这个脚本:
clear
echo -n "please enter a value"
read num
if [ "$num" -eq 8 ] then
echo "you entered 8"
else
echo "the number you entered was not 8"
我得到以下输出/错误:
请输入值5
./script.sh: 第 9 行: 意外标记“else”附近出现语法错误
./script.sh: 第 9 行: else'
为什么这个脚本无法运行?
答案1
子句后面缺少分号或换行符,并且块末尾也if
没有。fi
if
#!/bin/bash
clear
echo -n "please enter a value"
read num
if [ "$num" -eq 8 ]
then
echo "you entered 8"
else
echo "the number you entered was not 8"
fi
其他一些建议:
- 脚本应始终以一行开头
#!
,告诉系统要使用哪个解释器 - 您的比较
[ "$num" -eq 8 ]
是数字比较。如果您不确定用户是否真的会输入数字,请考虑使用字符串比较,[ 8 = "$num" ]
- 您可以将提示包含在
read
语句中,read -p "Please enter a value: " num