我在脚本中有以下代码段:
exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || error_handler )"
在其他地方,我必须通过文件描述符传递PIN,因此这里重定向和命令替换。
validate_pin
的输出是输入的PIN的修改值,但退出代码确定它是否成功且有效。为了管理任何失败,我可以将error_handler
放入什么内容?
如果我有exit
,它只退出命令替换子shell。命令替换子shell关闭后,分配的变量(FAIL=1
等)也会被清除。读取文件描述符以检查是否有效,但随后它被关闭,后续进程无法使用它。
答案 0 :(得分:1)
到目前为止,我发现的最佳方法是使用临时文件。
exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || touch .fail )"
if [[ -f .fail ]] ; then
do_stuff
fi