我對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'看起來不像其他地方的語法。 –