![无法执行 Bash 脚本 if / while](https://linux22.com/image/90652/%E6%97%A0%E6%B3%95%E6%89%A7%E8%A1%8C%20Bash%20%E8%84%9A%E6%9C%AC%20if%20%2F%20while.png)
我希望有人指出我的脚本中的错误。我学习的来源是如此错误,这就是为什么它让我感到困惑。
本脚本的目的:它将计算从用户输入的数字到数字 1 的数字
#!/bin/bash
echo -n Enter a number
read number
if (($number > 0)) ; then
index = $number
while [ $index => 1 ] ; do
echo $index
((index--))
break
done
fi
它给出的错误:索引:未找到命令
答案1
index = $number
=
不能在变量赋值时使用空格。使用index=$number
或((index = number))
[ $index => 1 ]
我想你想检查是否index
大于或等于 1,使用[ $index -ge 1 ]
或((index >= 1))
- 为什么
break
使用该语句?它用于退出循环 - 该
if
声明也不是必需的 - 您还可以使用
read -p
选项为用户添加消息
把它们放在一起:
#!/bin/bash
read -p 'Enter a number: ' number
while ((number >= 1)) ; do
echo $number
((number--))
done
答案2
问题出在“如果”之前
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
我猜你想要这样的东西:
#!/bin/bash
echo -n "Enter a number : "
read number
echo $number
if [ $number -gt "0" ] ; then
ind="$number"
while [ $ind -ge "1" ] ; do
echo $ind
((ind--))
done
fi
答案3
那么你可能想看看
man index
如果替换变量名称,则脚本的更正版本可以工作
#!/bin/bash
echo -n Enter a number
read num
if (($num > 0)) ; then
ind=$num
while [ $ind -ge 1 ] ; do
echo $ind
((ind--))
break
done
fi