bashは新しい行を追加しながらループを停止する必要があります。

bashは新しい行を追加しながらループを停止する必要があります。

私は過去2日間この問題を解決するために努力してきました。アドバイスが必要です。私が持っているすべてのデバイスのすべてのドライブを確認するための汎用スクリプトを作成しています。私が理解できない唯一の問題は、forループで実行するとテキストファイルのメガレード行が1行から3x行に変更されることです(以下の例)。今は多くの時間を費やしており、方法についてのアドバイスがあります。 「bus -d disk」形式の分割を防ぎ、1行に保つことをお勧めします。

(通常の猫でstdoutを作成して実行するときに1行)

$ sudo smartctl --scan |grep megaraid |awk '{print $1,$2,$3}' > megadrives; cat megadrives 
/dev/bus/0 -d megaraid,0
/dev/bus/0 -d megaraid,1
/dev/bus/0 -d megaraid,2
/dev/bus/0 -d megaraid,3

(forループ内で実行する場合は、各行を3つの新しい行に分割します。)

$ for i in $(cat megadrives); do echo $i; done
/dev/bus/0
-d
megaraid,0
/dev/bus/0
-d
megaraid,1
/dev/bus/0
-d
megaraid,2
/dev/bus/0
-d

ベストアンサー1

行の読み出しは通常、次のように実行されます。

while IFS= read -r line; do
    echo "$line"
done <inputfile

ところで

交換できます

: > megadrives; cat megadrives

そして

: | tee megadrives

おすすめ記事