"sudo..."コマンドの出力形式を識別する方法は?

"sudo..."コマンドの出力形式を識別する方法は?

"sudo iwlist wlan0 scan"コマンドが実行され、期待されるテキストが端末に返されたことを示すbash -x出力が添付されました。問題は、テキストがhiptail msgboxオプションとして渡されないことです。

他の「sudo...」コマンドを使用すると失敗し、「sudo..」コマンドのみを使用すると失敗します。私の考えでは、出力テキストに印刷されない文字があり、この問題が発生しているようです。

sudo iwlist wlan0 scan
wlan0     Interface doesn't support scanning : Network is down

whiptail --title 'Command sudo iwlist wlan0 scan output 1400'       -   -separate-output --scrolltext --msgbox '' 17 80 10

答え1


わからないときはいつでもstdoutをリダイレクトしてから、stderrを/ dev / nullにリダイレクトしてみてください。
たとえば、with を使用するとlsusb -h > /dev/null出力が表示されますが、with を使用するとlsusb -h 2> /dev/null出力がないため、ヘルプ出力が stderr に送信されます。
stderrをstdoutにリダイレクトする場合:
lsusb -h 2>&1
最初は明確ではありませんが、このコマンドが実行する作業はstderr(ファイル記述子#2)をstdout(ファイル記述子#1)にリダイレクトすることです。

関連情報