如何讓script一直loop到執行成功? - Linux

Table of Contents

while [ "$?" == "0" ]
do
echo 輸入FTP要用的密碼兩次\(記得要按enter\),兩次要一樣
passwd $2|| echo 錯誤7,兩次密碼要一樣。如果重新輸入密碼還是錯誤,就按
ctrl+C跳出
done

大概像上面這樣,我想把新ID的FTP、網芳的密碼設定統合成一個script,
但是因為不希望一個輸入錯誤,就要別的使用者重頭跑一遍,所以想用loop
在改失敗的時候loop回去重新輸入。

不過我這樣失敗了,不管成不成功,都會一直回去改密碼,反過來用until,
則是甚麼動作都沒有執行。請問這部分應該怎麼寫?

--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)

--

All Comments

Ina avatarIna2015-08-06
echo的exit value是0,要先存下 passwd 的exit value
Victoria avatarVictoria2015-08-08
請問要如何存?因為有好幾個指令接著跑,不能存到上一個
指令的recurn value
Ida avatarIda2015-08-10
retval=1; if [ "$retval" -gt 0 ]; then echo "..."
Emma avatarEmma2015-08-11
passwd $2; retval=$?; [ "$retval" = 0 ] || echo ...
Isabella avatarIsabella2015-08-13
fi
Odelette avatarOdelette2015-08-13
再把 if ... then ... fi 改成 while ... do ... done
Robert avatarRobert2015-08-15
passwd這行改成: passwd $2 || echo ... && break;
Adele avatarAdele2015-08-15
感謝你,成功,不過最後一行break是否沒必要?不然會跳掉。