我已經使用了下面的腳本(在這個網站上找到),並且無法讓它工作。printf不輸出到標準輸出,而是輸出到函數。爲什麼?
askit() {
while true ;
do
read -r -n 1 -p "continue? [y/n] :" rep
case $rep in
[yY]) return 0 ;;
[nN]) return 1 ;;
*) printf "no no, only y or n"
esac
done
}
if $(askit)
then
printf "\nWe go on, %s say.\n" $you
else
printf "\nThat's it, %s want to quit!\n" $you
break
fi
它適用於「y」或「n」條目。其他條目循環回來,沒有終端輸出。在下一個「y」或「n」之後,結果始終爲假。
printf語句中的換行符是不能在case語句中放入printf語句的遺留問題。我也嘗試過回聲以及相同的結果。
return語句似乎輸出到if條件。我很確定我的語法沒問題。我已經看過fflush和stdbuf ...
問題:爲什麼printf輸出到if語句而不是終端?
你可以提供x-ref到你從哪裏得到這個,所以原來可以改進? –
歡迎來到Stack Overflow。 請注意,在這裏說'謝謝'的首選方式是通過 提高投票的好問題和有用的答案(一旦你有足夠的聲譽這樣做),並接受任何 問題最有用的答案,你問(這也給你一個小小的提升,以你的聲望 )。 請參閱[關於]頁面,以及[如何在此處提問 ?]和 [當有人回答我的 問題時,我該怎麼辦? ?](http://stackoverflow.com/help/someone-answers) –