2017-12-07 6 views
0

Ubuntu 16 Server上の/ usr/lib/update-notifier/apt-checkから結果を取得して監視ツールのXML応答を作成しようとしていますが、どういうわけかこのapt-checkの値は私の変数に入るのを拒否します。 シンプルについては、はXML作成部分を省いています。変数でUbuntuの更新結果を返す

#!/bin/bash 
APTCHECK="/usr/lib/update-notifier/apt-check" 
APTResult="$(${APTCHECK})" 
echo "Result is $APTResult" 
exit 0 

このコードをbash -xで実行すると、結果は端末に返されますが、変数には割り当てられません。私が "コマンド"を "ls -lah"のような単純なものに置き換えると、すべてうまく動作します。

なぜこれが機能しないのかわかりません。誰ですか?

+1

リダイレクトstderr: '2>&1' –

+1

あなたのスクリプトはまったく役に立ちません。ほとんど無害ですが、終了コードは失われます。絶対的な改善は[echo'の無用な使用](http://www.iki.fi/era/unix/award.html#echo)を削除することですが、実際の終了コードを失うことは*唯一の*効果。 – tripleee

+0

配列に割り当てることは 'array =(command>&2)'と似ていますが、配列の順序はあまり予測できないか、または有用ではないでしょうし、配列を取得する構文は新しい複雑さになります。 – tripleee

答えて

1

apt-checkがstderrに出力されるので、代わりにaptresult=$(/usr/lib/update-notifier/apt-check 2>&1)でキャプチャする必要があります。

もう1つのオプションは--human-readableスイッチで、stdoutに出力されます。唯一の問題は、テキスト出力を解析する必要があることです(テキスト出力が実際に必要なものでない限り)。

+0

簡単な方法はありますかスクリプトがその出力をstderrに送信すると出力が消えますか? –

関連する問題