Como fazer um script bash perguntar ao usuário por um diretório e se ele não for encontrado, pergunte novamente

0

Eu estou fazendo um script para empurrar arquivos para git. Como seguro de falhas, gostaria de fazer com que o caminho para o repositório não seja aceito pelo script, caso ele não exista. Eu sou bastante novo quando se trata de scripting, daí eu venho aqui. Eu não encontrei nada semelhante ou só vi o mesmo exemplo de uso de while e for loops, mas não tenho certeza de como usá-los da maneira que eu preciso. O que eu tentei:

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

ele nem sai com o "por favor insira um caminho correto quando eu colocar algo aleatório como / as / asdas / asdsa

Obrigado antecipadamente.

    
por Mati 19.04.2017 / 10:45

2 respostas

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"

você poderia fazer assim. então, ele reinicia o script se estiver incorreto. Isto é, claro, se está no começo do seu roteiro.

    
por 19.04.2017 / 16:02
0

Então, um loop, então:

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"

Embora você possa considerar apenas ler o caminho na linha de comando ( $1 etc.) e sair se o caminho não existir. Isso permitiria que o usuário usasse a edição e o histórico de linha de comando usuais para inseri-lo.

Além disso, na primeira linha, cur='pwd' , você está definindo cur para a string pwd . Se você quer a saída do comando pwd , você precisa usar backticks: cur='pwd' , ou melhor $(...) : cur=$(pwd) .

    
por 27.04.2017 / 22:26