Como eu daria um loop nesse comando?

1

Um trecho do meu código é mostrado abaixo. O script atualmente é fechado se não conseguir encontrar o caminho.

[echo "could not find $REPLY, ensure the path is correct and try again"] 

Em vez disso, eu gostaria que nesse ponto fizesse loop novamente e tentasse aceitar a entrada novamente para o caminho. Como eu faria isso?

while [ $choice -eq 3 ]; do

read choice
if [ $choice -eq 1 ] ; then

    echo "You have chosen to spec....  '/path/../'" 
    read
    if [ -d $REPLY ]; then
        find $REPLY -type f -printf '%TY-%Tm-%Td %.8TT %p\n '| sort -r | head -20
    else 
        echo "could not find $REPLY, ensure the path is correct and try again"
    fi
else
    
por HS' 23.12.2014 / 02:32

2 respostas

1

while true; do
    echo "You have chosen to spec....  '/path/../'" 
    read
    if [ -d "$REPLY" ]; then
        find "$REPLY" -type f -printf '%TY-%Tm-%Td %.8TT %p\n '| sort -r | head -20
        break
    else
        echo "could not find $REPLY, ensure the path is correct and try again"
        echo "press enter to continue..."
        read cont
    fi
done
    
por 23.12.2014 / 03:06
0

Eu provavelmente usaria while AND case :

i=0 c=3
while case "$((i+=!(c==1))).$c"   in 
      ([MAX_REPEAT_NUM].*) ! break;;
      (*.3) read c; continue      ;;
      (*.1) printf 'prompt> '
            read d || continue    ;;esac
do    [ -d "$d" ] || continue
      find "$REPLY" -type f \
            -printf '%TY-%Tm-%Td %.8TT %p\n '| 
      sort -r | head -20
done

Você pode testar ramos de possibilidades dessa maneira.

    
por 23.12.2014 / 03:21

Tags