次のようなユーザー入力を求める関数を作成しました。
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
}
これまでのところうまく機能しますが、デフォルトの回答として「はい」を設定したいので、ユーザーが何も入力せずにEnterキーを押すと、「はい」にフォールバックするはずなので、試してみました|| "$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
}