我对Bash脚本非常陌生,无法在网上找到更多基本内容的帮助。我的任务是运行一个程序,试图接受用户输入,并通过将偶数除以2并将奇数乘以3并加1来得到它。我不知道任何高级命令,并且我确信有更简单的方法来做到这一点,但我不明白为什么我的代码给我从gedit“命令未找到”错误。Bash变量操作
我的代码:
#!/bin/bash
#Takes in a number and computes it into hailstone series while
#displaying each number onto the screen
echo Enter number:
read n
while [$n -gt 1]
do
if [$n % 2 -eq 0]
then
let n=n/2
echo $n
else
let n=n*3+1
echo $n the number is header
fi
done
我的变量不断跳过第一个if语句并返回我的“是首部”检查声明,我不希望它。如果我输入8,它应该被修改2 -eq 0,因此它应该分裂直到它等于1或更少。
你没有足够小心的间距。你必须使用'[$ n-gt 1]',因为命令名是'[','[''必须是']'的最后一个参数。或者你可以使用'[['''''''''' Shell脚本需要对空间有很多的关注。 –
http://shellcheck.net/是你的朋友,用于查找语法错误而不需要人类参与。 –
btw,就如何思考它而言:'['是**命令**,不是语言语法。正如你需要用两个单词来运行'ls mydir'而不是'lsmydir',你需要运行'[foo'而不是'[foo''来防止shell寻找一个名为'[foo'的不同命令。如果你想让事情变得不那么困惑,那么使用命令'test“$ n”-gt 1'而不是''“$”n“-gt 1]',因为'test'看起来不像其他地方的语法。 –