0

FreeBSD の /bin/sh にインストール シェル スクリプトを記述しようとしています。

DialogOptions='--trim --ok-label "次へ" --backtitle "ワークステーション インストーラー"'

dialog $DialogOptions --max-input 4 --cancel-label "中止" --inputbox "入力してください"

上記はエラーで終了します

エラー: 不明なオプション インストーラー。

DialogOptions 変数をダイアログに渡すと、引用符の解釈が異なると思います。なぜそうなるのか途方に暮れています。

また、ok ラベルに [次へ] ではなく [次へ] と表示されていることにも気付きました。

4

2 に答える 2

1

シェルに関する限り、期待どおりに動作するはずです。

$ DialogOptions='--trim --ok-label "Next" --backtitle "Workstation Installer"'

この時点で、変数「DialogOptions」には単一の文字列が含まれています。

$ echo ..$DialogOptions..
..--trim --ok-label "Next" --backtitle "Workstation Installer"..

echo コマンドには、--trim、--ok-label、"Next" --backtitle、"Workstation Installer" の5 つの引数があります。

于 2013-01-22T22:43:47.000 に答える
0

必要なことを行うには、配列を使用する必要があります。これにより、引用符で囲まれた引数が分割されません。

DialogOptions=(--trim --ok-label "Next" --backtitle "Workstation Installer")
dialog "${DialogOptions[@]}" --max-input 4 --cancel-label "Abort" --inputbox "Enter stuff"

配列をサポートするシェル (bash/ksh/zsh) も使用する必要があります。それができない場合は、次を使用する必要がありますeval

DialogOptions='--trim --ok-label Next --backtitle "Workstation Installer"'
eval "dialog $DialogOptions --max-input 4 --cancel-label Abort --inputbox \"Enter stuff\""

文字を含まない文字列を引用符で囲む必要はないことに注意してください。$IFS

于 2013-01-22T23:15:33.683 に答える