Я делаю скрипт для отправки файлов в Git. Как отказоустойчивый, я хотел бы сделать так, чтобы сценарий не принимал путь к хранилищу, если он не существует. Я довольно нов, когда дело доходит до сценариев, поэтому я пришел сюда. Я не нашел ничего подобного или видел только один и тот же пример использования циклов while и for, но я не уверен, как использовать их так, как мне нужно. Что я пробовал:

cur='pwd'
    echo -n "Path: "
    read filepath

        if [ -e "$filepath" ]; then
            goodpath=1
        else
            goodpath=0
        if [ $goodpath = "0" ];then
        echo "Please insert a correct path"
        fi
        fi
    fi
    if [ $goodpath = "1" ]; then
    echo "path=$filepath" >> .gitpush
    echo "$Path saved in the following file: $cur/.gitpush"
    echo
    echo
    fi

он даже не выводит "пожалуйста, введите правильный путь, когда я помещаю что-то случайное, например /as /asdas /asdsa

Заранее спасибо.

2 ответа2

0
cur='pwd'
echo -n "Path: "
read filepath

    if [ ! -d $filepath ]; then
    echo "Please insert a correct path"
    sleep 1
    $cur/*yourscript*
    fi
echo "path=$filepath" >> .gitpush
echo "$Path saved in the following file: $cur/.gitpush"

Вы могли бы сделать это так. поэтому он перезапускает скрипт, если он неверный. Это, конечно, если это в начале вашего сценария.

0

Итак, цикл, тогда:

filepath=
while true ; do
    read -r -p "Path: " filepath
    if [ -d "$filepath" ] ; then
        break
    fi
    echo "$filepath is not a directory..."
done
do_something_with "$filepath"

Хотя вы можете захотеть просто прочитать путь из командной строки ($1 и т.д.) И выйти, если путь не существует. Это позволило бы пользователю использовать обычное редактирование командной строки и историю для его ввода.

Кроме того, в первой строке cur='pwd' вы устанавливаете cur для строки pwd . Если вы хотите получить вывод команды pwd , вам нужно использовать обратные метки : cur=`pwd` или лучше $(...) : cur=$(pwd) .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .