3

スクリプトに次のスニペットがあります。

exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || error_handler )"

他の場所では、ファイル記述子を介して PIN を渡す必要があるため、ここではリダイレクトとコマンド置換を行います。

の出力validate_pinは、入力された PIN の変更された値ですが、終了コードによって、それが成功して有効であったかどうかが決まります。error_handler障害を管理するために何を入れることができますか?

私が持っている場合exit、コマンド置換サブシェルのみを終了します。コマンド置換サブシェルが閉じられるとすぐに、割り当てられた変数 (FAIL=1など) も消去されます。ファイル記述子を読み取って動作を確認することはできますが、その後閉じられ、後続のプロセスはそれを使用できません。

4

1 に答える 1

1

これまでに見つけた最良の方法は、一時ファイルを使用することです。

exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || touch .fail )"
if [[ -f .fail ]] ; then
    do_stuff
fi
于 2015-05-27T12:58:17.017 に答える