私は出力を返すプログラムを呼び出すbashスクリプトを作成しています(リターンコードを返します)。私は、プログラムの戻りコードと出力の数(出力自体ではない)の両方を気にしています。このプログラムではインターネット経由でデータを取得する必要があるため、2回呼び出す必要はありません(特に、一時的なネットワークの問題などで2つの呼び出しのうち1つだけが失敗すると問題が発生する可能性があります)。出力行の数とリターンコードの両方をキャプチャするための最善のスクリプトは次のとおりです。よりエレガントなものがありますか?出力とリターンコードの行数を同時に取得する
#!/bin/bash
line=$(foo | wc -l; echo ${PIPESTATUS[0]})
line=$(echo line | tr '\n' ' ')
lineCount=$(echo line | awk '{ print $1}')
returnCode=$(echo line | awk '{ print $2}')
+1とても素敵な答え。 –
私はその2番目の方法がとても好きです。パイプ波がスクリプトの初期に設定されていないと仮定すると、set + o pipefailは省略できます。 – orangejulius
@ spectre256:はい、「pipefail」は必須ではないということを強調するために追加しました。 – Philipp