Hej!
Någon som vet hur man kör ett test i bash på hur många tecken en variabel är på?
Låt säga att jag vill testa om en variabel är två bokstäver (ja/nej).
Följande exempel kanske är lite overkill för dig. Jag använder dock denna mall hämtad ifrån OpenBSDs installationsscript när jag vill ställa frågor till användare i shellscript:
# Ask for user input.
#
# $1 = the question to ask the user
# $2 = the default answer
#
# Save the user input (or the default) in $resp.
ask() {
local _question=$1 _default=$2
set -o noglob
while :; do
echo -n "$_question "
[[ -z $_default ]] || echo -n "[$_default] "
read resp
case $resp in
*) : ${resp:=$_default}
break
;;
esac
done
set +o noglob
}
# Ask the user for a y or n, and insist on 'y', 'yes', 'n' or 'no'.
#
# $1 = the question to ask the user
# $2 = the default answer (assumed to be 'n' if empty).
#
# Return 'yes' or 'no' in $resp.
ask_yn() {
local _q=$1 _a=${2:-no} _resp
typeset -l _resp
while :; do
ask "$_q" "$_a"
_resp=$resp
case $_resp in
y|yes) resp=yes ; return ;;
n|no) resp=no ; return ;;
esac
done
}
Funktionerna används sedan på följande sätt:
ask_yn "Do you want to commit this?"
[[ ${resp} == "no" ]] && exit