zenityの代わりにWhiptailを使用するようにスクリプトを変更する

zenityの代わりにWhiptailを使用するようにスクリプトを変更する

Whiptailを使用するためにいくつかのzenityベースのスクリプトを変換するのに問題があります。

ジョブスクリプトは次のとおりです。

#!/bin/bash
xfreerdp /v:farm.company.com \
/d:company.com \
/u:$(zenity \
--entry \
--title="Username" \
--text="Enter your Username")

ホイップテールを使用するように変換しようとしていますが、空白の画面が表示されます。

これが私が今まで持っているものです:

#!/bin/bash
xfreerdp /v:farm.company.com \
/d:company.com \
/u:$(whiptail \
--inputbox "Username" 10 30)

私は何が間違っていましたか?

答え1

入力ボックスが表示されないのは、whiptailキャプチャする標準出力にディスプレイが書き込まれるためです。入力結果はstderrに書き込まれますが、キャプチャしません。これが機能するには、代わりにキャプチャするstderrコマンドの置き換えが必要ですstdout。リダイレクトでこれを行うことができます。

#!/bin/bash
xfreerdp /v:farm.company.com \
/d:company.com \
/u:$(whiptail \
--inputbox "Username" 10 30 3>&1 1>&2 2>&3)

関連情報