我想運行一個簡單的bash計時器,發現這個online(用戶brent7890)理解何時在bash腳本中使用空格
#!/usr/bin/bash
timer=60
until [ "$timer" = 0 ]
do
clear
echo "$timer"
timer=`expr $timer - 1`
sleep 1
done
echo "-------Time to go home--------"
我不能複製,因爲服務器是另一個網絡上粘貼此代碼。我輸入它像這樣(下面),並以「直到」開始的行上出現錯誤。
#!/usr/bin/bash
timer=60
#Note I forgot the space between [ and "
until ["$timer" = 0 ]
do
clear
echo "$timer"
timer=`expr $timer - 1`
sleep 1
done
echo "-------Time to go home--------"
哪裏有間距這樣的記錄?這很重要。 Bash腳本可能會讓人困惑,我想了解爲什麼這個空間很重要。
這個問題背後的混亂是許多風格指導推薦完全避免使用''的主要原因。直到[「$ $ $」= 0]',而不是'直到測試「$ timer」= 0',並且間距的需要變得明顯。 –
與'['(aka'test')命令中需要的空格不同,它們在分配中被禁止。 'timer = 60'工作,但'timer = 60'會嘗試運行帶有參數「=」和「60」的'timer'命令。缺少空格實際上是shell如何區分常規命令和賦值。另外,'''命令中需要在運算符周圍使用空格:'[「$ timer」= 0]'是一個有效的'test'命令,但是它不符合你的期望,因爲它不能識別'=作爲一個操作員。 –