「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

POSIXreadにはありません。-pこれはbashのようないくつかのシェルで実装された非POSIX拡張です。現在、拡張が制限されているPOSIX互換シェルを使用しています。/bin/shbash拡張を使用する場合は、使用を検討する必要があります/bin/bash

代わりに、POSIXlyで次のことができます。

printf 'Press Enter to continue'
read REPLY

おすすめ記事