23

bash read コマンドは、次の場合に非常に便利です。

  • read -p を使用してユーザーにプロンプ​​トを表示し、ユーザーからの入力をキャプチャします
  • while readループを使用して、ファイルの行を反復処理します。

ただし、両方を同時に実行しようとすると問題が発生します。

例えば:

#!/bin/bash

while read item
do

    echo Item: $item

    read -p "choose wisely: " choice

    echo You still have made a $choice.

done < /tmp/item.list 

ユーザーが選択肢を入力するのをブロックして待機するのではなく、bash は $choice に item.list ファイル内の次の項目を入力します。

bash は読み取りループ内でネストされた読み取りをサポートしていますか?

4

1 に答える 1

36

read最も簡単な修正は、標準入力の代わりに別のファイル記述子から外部を読み取ることです。Bash では、この-uオプションを使用すると、これが少し簡単になります。

while read -u 3 item
do
  # other stuff
  read -p "choose wisely: " choice
  # other stuff
done 3< /tmp/item.list
于 2013-04-30T20:09:22.180 に答える