2017-02-14 11 views
3

キーを押すまで各繰り返しの後に一時停止するforループをどのように実行できますか?私はFILE1、FILE2、FILE3の行番号を印刷するが、唯一のキーを押した後、それぞれを継続したい場合 は、たとえば、:Linux - キーが押されるまでループを一時停止する

for f in dir/file? ; do wc -l $f ; pause until key is pressed ; done 

謝罪これは些細であれば、私はコーディングに新たなんです。

答えて

3

ユーザー

read -p "Press key to continue.. " -n1 -s 

man readページから使用されるオプションから単一の文字(-n1)入力を待つreadコマンドを使用して、

-n nchars return after reading NCHARS characters rather than waiting 
      for a newline, but honor a delimiter if fewer than NCHARS 
      characters are read before the delimiter 

-s  do not echo input coming from a terminal 

-p  prompt output the string PROMPT without a trailing newline before 
     attempting to read 
0

@Stewart:試してみてください:

cat script.ksh 
trap "echo exiting...; exit" SIGHUP SIGINT SIGTERM 
for file in /tmp/* 
do 
     wc -l $file 
echo "Waiting for key hit.." 
read var 
     if [[ -n $var ]] 
     then 
       continue 
     fi 
done 

このスクリプトは継続的に実行されますシステムがそれを殺すためのシグナルを得るまで、(例えば、 - > cntl + cなど)これが役に立ったら教えてください。ロジックは単純なもので、ユーザーの中断を処理するためのスクリプトの最初の行を作成し、forループを作成してすべてのファイルを含むディレクトリを探します(必要に応じて変更することもできます)。現在のファイルのwc -lを表示します。次に、ユーザーが何かを入力した場合、何回か繰り返すように選択を入力するようにユーザーに依頼します。

+1

これは私が見つけた唯一の答えはPOSIXです。まもなくテスト。 – zaTricky

+0

@zaTricky、どういうことか教えてください。 – RavinderSingh13

+1

作品100% - 唯一の欠点は、あなたが* Enter *を押すことです。私が見つけた他のすべての "解決策"はPOSIX以外のフラグ(-p、-s、-nなど)を使用します。 – zaTricky

関連する問題