シェルスクリプトでは非常に新しく、かなり配線されている問題が発生しました。シェルスクリプトでループの問題が発生した後も変数がまだ空です
#!/bin/bash
list=""
list=`mtx -f /dev/sg2 status | while read status
do
result=$(echo ${status} | grep "Full")
if [ -z "$result" ]; then
continue
else
echo $(echo ${result} | cut -f3 -d' ' | tr -d [:alpha:] | tr -d [:punct:])
fi
done`
echo ${list}
for haha in ${list}
do
printf "current slot is:%s \n" ${haha}
done
何プログラムはありませんが、それはmtx -f /dev/sg2 status
を実行していることであり、各ラインに行くとフルディスクがあるかどう参照してください。私はちょうどそれをここに投稿するように、プログラムはかなり単純です。その行に "Full"がある場合は、その行にスロット番号を記録し、list
に入れます。
list=
の後に6行目にバッククォートを入れて、それ以降は "while"ループ全体をカバーすることに注意してください。理由は私には不明ですが、私はちょうどそれを検索してこの使用法を得ました。 whileループは別のシェルなどを開くので、whileループが終了すると、ループ内で連結されたものはすべて失われてしまうので、最初の実装ではwhileループの後にはまだlist
は空です。
私の質問は:上記のコードがうまく動作しても、他の人にはややこしいと思われますが、ループが完了した後にはただ1つだけlist
を作ることができます。ループからより多くの情報を引き出すことができるようにこれを修正するより良い方法はありますか?他の値を保存するためにlist2
が必要な場合はどうすればよいですか?ありがとう。
何をしたいですか? –