[問題] 如何讓script一直loop到執行成功?

看板Linux作者 (玻璃做的大叔)時間10年前 (2015/08/02 09:19), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
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) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.35.57 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1438478387.A.131.html

08/02 16:45, , 1F
echo的exit value是0,要先存下 passwd 的exit value
08/02 16:45, 1F

08/02 20:29, , 2F
請問要如何存?因為有好幾個指令接著跑,不能存到上一個
08/02 20:29, 2F

08/02 20:29, , 3F
指令的recurn value
08/02 20:29, 3F

08/02 20:50, , 4F
retval=1; if [ "$retval" -gt 0 ]; then echo "..."
08/02 20:50, 4F

08/02 20:51, , 5F
passwd $2; retval=$?; [ "$retval" = 0 ] || echo ...
08/02 20:51, 5F

08/02 20:52, , 6F
fi
08/02 20:52, 6F

08/02 20:53, , 7F
再把 if ... then ... fi 改成 while ... do ... done
08/02 20:53, 7F

08/02 20:59, , 8F
passwd這行改成: passwd $2 || echo ... && break;
08/02 20:59, 8F

08/02 22:01, , 9F
感謝你,成功,不過最後一行break是否沒必要?不然會跳掉。
08/02 22:01, 9F
文章代碼(AID): #1LlN0p4n (Linux)
文章代碼(AID): #1LlN0p4n (Linux)