デフォルトのロギングスクリプトを作成しており、次の出力をキャプチャしたいと思います。ps up 12345
これまで私は以下を持っています:
DATE2=`date +%Y-%m-%d:%H:%M:%S`
echo ${DATE2} >> $filename
ps up 12345 --no-headers >> $filename
これは私が望む情報を3行で提供します(1 =日付、2 = ps 3 =空白行として出力)。
しかし、理想的には、これらの内容を一行でキャプチャしたいと思います。それらを組み合わせて空の行を無視する方法はありますか?
答え1
ps出力を変数に保存し、echoまたはprintfを使用して書き込むこともできます。
DATE2=`date +%Y-%m-%d:%H:%M:%S`
PS_RESULT=`ps up 12345 --no-headers`
printf "%s: %s" "${DATE2}" "${PS_RESULT}" >> $filename
参考までに、この構文は入れ子にすることができるので、いつ使用できるかより$(command)
慣れておくと便利です。`command`
答え2
1つの解決策は、最初の文字列の末尾に改行文字を印刷しないことです。スペースが必要な場合があります。
echo -n "${DATE2} " >>"$filename"