
現在、YesNoPromptと必要な変数を使用して呼び出すことができる再利用可能なYes / Noプロンプトを作成しようとしている次のダイアログ機能があります。
関数は次のとおりです。
function YesNoPrompt {
dialog --begin 2 1 --no-shadow --title "$1" --hline "$2" \
--backtitle "$3" --yes-label $4 --no-label $5 \
--yesno "$6" 26 38 20>&1 > /dev/tty \
|| exit
sudo reboot
}
そして呼び出されました:
YesNoPrompt "TITLE" "HLINE" "BACKGROUND TEXT" "YES" "NO" "MAIN MESSAGE"
うまくいきますが、ユーザーがハードコードされたシャットダウンの代わりに「はい」または「いいえ」を選択し、現在機能があることを再開した場合に何が起こるかを決定するオプションを渡すことができます。
これを行う方法はありますか?
どんなアイデアでも大いに感謝します。
答え1
dialog
プロセスがゼロ以外の終了状態で終了すると、次の関数はパラメータ7のコマンドを実行します。そうでない場合 -dialog
シャットダウンが成功すると、関数はパラメーター8のコマンドを実行します。
function YesNoPrompt {
if ! dialog --begin 2 1 --no-shadow --title "$1" --hline "$2" \
--backtitle "$3" --yes-label "$4" --no-label "$5" \
--yesno "$6" 26 38 20>&1 > /dev/tty
then
eval "$7"
else
eval "$8"
fi
}
||
論理を完全なステートメントに書き直しますif/then/else
。それ以外の場合、置換exit
(exit
ORを除くreturn
)は次のsudo reboot
(または置換)を許可できます。返品実装する。おそらくあなたは1つまたは別のコマンドを実行したいと思うでしょう。また、すべてのパラメータを引用しました。
eval
複数の単語をコマンドとして渡したい場合はsudo reboot
必須です。これにより、eval
パラメータがシェル解析の別のラウンドを経るため、ワイルドカードやその他の拡張などの項目に注意する必要があります。