![为什么我的条件总是被评估为真?](https://linux22.com/image/847606/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E6%9D%A1%E4%BB%B6%E6%80%BB%E6%98%AF%E8%A2%AB%E8%AF%84%E4%BC%B0%E4%B8%BA%E7%9C%9F%EF%BC%9F.png)
我正在编写我的第一个 bash 脚本,但遇到了一个问题。下面是一个例子,我要求输入姓名、年龄,并显示一条消息,该消息会根据年龄是否小于或等于 35 岁而变化:
#!/bin/bash
ageLimit = 34
echo "What is your name?"
read userName
echo "How old are you?"
read userAge
if (( "$userAge" -le "$ageLimit" )); then
echo "Hey, $userName. At $userAge years old, you are young."
else
echo "Gosh, $userName. At $userAge years old, you're pretty old."
fi
无论我回答多少年龄,他们都说我很年轻。这是在 Raspbian 上运行的——希望这能有所帮助。谢谢!
杰里米
答案1
=
空格在 whell 脚本中起着很大的作用,你需要注意它们。变量名和符号及其值之间没有空格。
重写你的 shell 脚本如下:
#!/bin/bash
ageLimit=34
echo "What is your name?"
read userName
echo "How old are you?"
read userAge
if [[ "$userAge" -le "$ageLimit" ]]; then
echo "Hey, $userName. At $userAge years old, you are young."
else
echo "Gosh, $userName. At $userAge years old, you're pretty old."
fi
在动手实践时,请参考有关 shell 脚本的优秀教程。谷歌搜索后,可以找到以下优秀教程:
你可能还想知道这一点:
答案2
我发现你的代码中有两个小错误。
[1] 声明变量时不要使用空格,请这样做
ageLimit=34
[2] 提出条件的方法有两种if
,请随意使用。
if [ "$userAge" -le "$ageLimit" ]; then
或者
if (( "$userAge" <= "$ageLimit" )); then
答案3
如果您尝试评估两个字符串,则使用 -le -ge 如果您想评估数字,我建议您使用常规运算符 > <= 这是通用惯例并且很好。所以在这种情况下使用
如果 [ “$userAge” -le “$ageLimit” ]; 则否则 fi