web-dev-qa-db-ja.com

zenityの代わりに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)

私は何が間違っているのですか?

3
oshirowanen

入力ボックスが表示されない理由は、whiptailがキャプチャしているstdoutに表示を書き込むためです。入力の結果は、キャプチャしていない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)
3
jordanm