如何在“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,这是在某些 shell(如 bash)中实现的非 POSIX 扩展。您当前使用的/bin/sh可能是具有有限扩展的 POSIX 兼容 shell,如果您想使用 bash 扩展,您应该考虑使用它/bin/bash

相反,您可以 POSIXly 这样做:

printf 'Press Enter to continue'
read REPLY

相关内容