我寫了詢問類似這樣的用戶輸入的功能:zsh - 用默認值讀取用戶輸入 - 空輸入不爲空?
function is_confirmed {
read -rs -k 1 ans
if [[ "${ans}" == "n" || "${ans}" == "N" ]]; then
printf "No\n"
return 1
fi
if [[ "${ans}" == "y" || "${ans}" == "Y" ]]; then
printf "Yes\n"
return 0
fi
# here is my actual problem!!! this doesnt work when user input is blank!
if [[ "${ans}" == "" ]]; then
printf "Yes!\n"
return 1
fi
# Output is Damn!
printf "Damn"
return 1
}
的偉大工程,到目前爲止,不過,我想設置成「yes」作爲默認answear,所以當用戶輸入什麼,只是按下回車,它應該回落到「是」,所以我嘗試了|| "$ans" == ""
但仍然回落到「該死」
怎麼回事?當我在echo $ans
它是空的函數的結尾......
編輯1:
這是發生了什麼:
e_ask "Are you sure you want to install?\nWarning: This may override some files in your home directory."
if is_confirmed; then
echo "Great!"
else
e_error "Aborting..."
fi
這裏的功能是:
function e_ask {
printf "\n$1\n"
printf "(Y/n): "
}
function e_warn {
printf "Warning: $1\n"
}
function e_error {
printf "Error: $1\n"
exit 1
}
這並不能解決我的問題。當我沒有在shell中輸入任何內容,只需按回車,以便$ ans應該是一個空字符串,'$ ans ==「」''仍然會回到「該死」。 –
@MartinBroder對不起,我誤解了。如果你輸入'N'或'n',你想輸出「No」;如果輸入'y','Y'或什麼都不輸入,輸出「Yes」在這種情況下,您只需更改默認情況,或者用'y | Y |「」'替換'y | Y'。 – giordano
沒問題, 嗯是的,當我輸入'Y','Y',「」和「否」時,如果它是'N',''n'或其他任何東西('a', 'b','c' ...) –