smartctl -a
その出力のデバイスシリアル番号を、出力が保存されるファイル名で実行して使用したいと思います。私はsmartctl
これを2回呼び出し、適切なテキスト操作を使用して出力を分割することでこれを行うことができることを知っています。 1回の呼び出しでこれを行う方法はありますかsmartctl
?
答え1
出力をsmartctl
変数に保存し、必要に応じて複数回使用してください。
smartctl_output=$(smartctl -a /dev/sda)
serial_number=$(printf %s "$smartctl_output" | awk 'sub(/^Serial Number: */,"")')
printf %s "$smartctl_output" >"$serial_number.txt"
答え2
出力をsmartctl -a
一時ファイルに保存してから二重解析できます。これにより、スクリプトをすばやくテストできます(一時ファイルを一度作成し、呼び出しをコメントアウトし、満足するまでパーサーを調整し、行のコメントsmartctl
を削除しますsmartctl
)。
あるいは、pee
パイプを使用してsmartctl -a
両方のプログラムに出力をパイプすることもできますが、あるプロセスには別のプロセスで見つかったシーケンス番号に名前を変更できる一時ファイルがまだ必要です。