Como obtenho uma entrada do usuário dentro de um loop 'for in'?

0

Eu quero fazer o script a seguir para avisar o usuário após cada iteração e aguardar a entrada antes de executar a próxima iteração:

#!/bin/sh

DIR=$(pwd)

for f in $DIR/test-data/*.txt
do
    echo "$f"
    n=$(wc -w < "$f")
    k=$(( $n > 6 ? 6 : $n ))
    echo $n:$k
    java "Permutation" $k < "$f"
    read -p "Press Enter to continue"
done

O comando read apenas imprime o seguinte e continua sem pausa:

Press Enter to continue./test.sh: 12: read: arg count
    
por razzak 28.03.2018 / 22:55

1 resposta

2

POSIX read não tem -p , que é uma extensão não POSIX implementada em alguns shells (como o bash). Você está atualmente usando /bin/sh , que é provavelmente um shell compatível com POSIX com extensões limitadas. Se você quiser usar extensões bash, considere usar /bin/bash .

Em vez disso, você pode POSIXly fazer isso:

printf 'Press Enter to continue'
read REPLY
    
por 28.03.2018 / 22:59

Tags