"for in" 루프에서 사용자 입력을 얻는 방법

"for in" 루프에서 사용자 입력을 얻는 방법

각 반복 후에 사용자에게 메시지를 표시하고 다음 반복을 실행하기 전에 입력을 기다리도록 다음 스크립트를 만들고 싶습니다.

#!/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

read명령은 단순히 다음을 인쇄하고 일시 중지하지 않고 계속됩니다.

Press Enter to continue./test.sh: 12: read: arg count

답변1

POSIX read에는 없습니다. -p이것은 bash와 같은 일부 쉘에서 구현된 비 POSIX 확장입니다. 현재 확장이 제한된 POSIX 호환 쉘을 사용하고 있을 것입니다. /bin/shbash 확장을 사용하려는 경우 사용을 고려해야 합니다 /bin/bash.

대신 POSIXly로 다음을 수행할 수 있습니다.

printf 'Press Enter to continue'
read REPLY

관련 정보