我目前正在學習Linux和作爲一個家庭作業,我們需要創建一些基本的shell腳本不能正常工作。沒有什麼特別複雜的,但這個讓我頭疼。這裏是我的代碼:Until循環如預期
until [ "$toPrint" == 'fin' ]
do
echo "Enter file name to print out :" ; read toPrint
sh ./afficher.sh "$toPrint"
done
基本上,我有叫afficher.sh另一個腳本(我是法國人,所以不要介意用法語)和讀取任何文件名它會作爲一個參數。然而,當我輸入「fin」時,除非它仍然試圖打印名爲「fin」的文件,否則應該停止一切。我讀了一點關於直到在互聯網上,一旦它成爲真正的循環,應立即停止,這不是我的情況......
FYI,''==不是由POSIX標準保證內部'[]'工作。使用'='進行字符串比較以與所有POSIX shell兼容。 –
看操作的順序 - 你讀,然後運行該腳本,然後你回去到循環的頂部,並檢查退出條件。您不會檢查讀取值和運行腳本之間的退出條件,因此當然不會立即退出。 –