重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Solaris上でシェルスクリプト(bash)にて
ファイルから1行ずつ読み込み、1行毎に実行確認の入力を促す処理を行いたいのですが、
while read lineの中の標準入力のreadがファイルの次の行を読み込んでしまい、
上手くいきません。ご教示いただけますでしょうか。

(ファイルの中身(delcmd.txt))
delete from a_tbl where id='aaa';
delete from b_tbl where id='bbb';
delete from c_tbl where id='ccc';

(シェルスクリプト)
cat ${delcmd.txt} | while read line
do
echo -n "${line}?(y/n):"
read ans
if [ ${ans} = "y" ] || [ ${ans} = "Y" ]; then
(ファイルの中身の実行)
fi
done

A 回答 (2件)

識別子を変えるとできそう。



while read LINE <&3; do echo $LINE; read ANS; done 3< delcmd.txt

http://qiita.com/ma2saka/items/b523507281bfc633e …
http://arakanoj.com/2%E3%81%A4%E3%81%AE%E3%83%95 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お教えいただいた方法でうまくいきました。
教えていただいた方法、及び、リンクを張っていただいたURLに書かれていた方法(read ANS < /dev/tty)でも
ファイルのreadと、キーボード入力のreadとが分かれて動くことを確認できました。
大変助かりました。ありがとうございました。

お礼日時:2016/06/11 09:09

while read line


do

done < delcmd.txt
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2016/06/11 09:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!