Сценарий Bash поможет с, если тогда еще и чувствительность к регистру - PullRequest
0 голосов
/ 06 ноября 2010

Хорошо. Я пытаюсь создать ситуацию, в которой я проверяю, существует ли файл, если он существует, я даю пользователю возможность загрузить его снова - я хочу, чтобы по умолчанию (ввод) было Y, я хочу Y или Чтобы продолжить сценарий, я хочу, чтобы N или n выходили из сценария, и я хочу, чтобы все другие ответы вернулись и повторили вопрос ... но я застрял на этом.

То, что я сделал, на самом деле просто продолжается (ввод) и завершается с ошибкой на всех других ответах, кроме строчных y.

Вот оно:

if [ -f $target/$remote_backup ];then
    read -p "This file already exists, do you still want to download? [Y/n]" decide
     if [ -z $decide ];then
        # if you press return it'll default to Y and continue
        decide="Y"
    else
        if [ $decide != y ]; then
        echo "Ok you said no or pressed a random button, exiting"
        exit -1
    fi
fi
fi

Ответы [ 2 ]

4 голосов
/ 06 ноября 2010

Обычная структура для этого: case.

case "$decide" in
  y|Y|'') echo "yes" ;;
  n|N) echo "no" ;;
  *) echo "boo" ;;
esac
1 голос
/ 06 ноября 2010

Попробуйте цикл while:

if [ -f $target/$remote_backup ]; then
    decide="?"
    while [ "$decide" != "y" -a "$decide" != "n" ]; do
        read -p "This file already exists, do you still want to download? [Y/n] " decide
        if [ -z $decide ]; then
            decide="y"
        fi
    done
    echo Decision: $decide
fi
...