web-dev-qa-db-ja.com

ホイップテールの奇妙な行動

私のコード:

read -ra var <<<$(sed -ne's/^ *:\([[:upper:]]*\).*/\1/p' /etc/sysconfig/iptables)
chains=$(whiptail --title "Add rule" --menu "chains" 16 78 5 "${var[@]}" 3>&1 1>&2 2>&3)

利用可能なすべてのiptablesチェーンをホイップテールメニューに入れたいのですが、スクリプトを実行すると、次のようになります。

screenshot with empty Add rule window

しかし、ホイップテール構文に--ok-buttonを追加すると、次のようになります。

chains=$(whiptail --title "Add rule" --menu "chains" 16 78 5 --ok-button "${var[@]}" 3>&1 1>&2 2>&3)

screenshot with output forward selection

--ok-buttonの後にいくつかの選択肢を書く必要があることはわかっていますが(例:Ok)、このスクリプトを実行すると、最初の画像に示されているものが得られました。

--menuタグ--notagsを超えて追加しましたが、最初の画像に表示されているものがまだ表示されています。

スペースを削除した場合:

chains=$(whiptail --title "Add rule" --menu "chains" 16 78 5 --ok-button Ok"${var[@]}" 3>&1 1>&2 2>&3)

私はこれを得た:

screenshot with output selection

タグ--notagsを追加して、配列var内のアイテムのみを表示したいと思います。

この問題を解決するにはどうすればよいですか?

1
Michal N.

--notagsおよび--ok-buttonオプションは、--menuオプションの前に配置する必要があります。これらは、menuウィジェットの動作を変更します。

whiptailのドキュメントにはいくつかの作業が必要です。 dialog のマニュアルページが役立つかもしれません:strings /usr/bin/whiptailから、whiptailには--notagsオプションがあることがわかりますが、そうではありません whiptail 's マニュアルページで説明されています。ダイアログ内:

   --no-tags
          Some  widgets  (checklist, inputmenu, radiolist, menu) display a
          list with two columns (a "tag" and "description").  The  tag  is
          useful  for scripting, but may not help the user.  The --no-tags
          option (from Xdialog) may be used to suppress the column of tags
          from  the  display.  Unlike the --no-items option, this does not
          affect the data which is read from the script

dialog--notags-no-tagsにマップします(Xdialogは、最初に機能を実装し、後者の名前)。

2
Thomas Dickey