bash命令替换中的脚本逻辑

时间:2015-05-27 12:54:48

标签: bash scope command-substitution

我在脚本中有以下代码段:

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

在其他地方,我必须通过文件描述符传递PIN,因此这里重定向和命令替换。

validate_pin的输出是输入的PIN的修改值,但退出代码确定它是否成功且有效。为了管理任何失败,我可以将error_handler放入什么内容?

如果我有exit,它只退出命令替换子shell。命令替换子shell关闭后,分配的变量(FAIL=1等)也会被清除。读取文件描述符以检查是否有效,但随后它被关闭,后续进程无法使用它。

1 个答案:

答案 0 :(得分:1)

到目前为止,我发现的最佳方法是使用临时文件。

exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || touch .fail )"
if [[ -f .fail ]] ; then
    do_stuff
fi