在Bash命令替换中使用脚本逻辑

3

我有一个脚本中的代码片段:

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

另外,我必须通过文件描述符传递PIN码,因此这里需要重定向和命令替换。

validate_pin的输出是输入的PIN码的修改值,但退出代码决定了它是否成功和有效。 我可以在error_handler中放置什么来处理任何失败?

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

1个回答

1
到目前为止,我发现最好的方法是使用临时文件。
exec 3<<<"$(zenity --entry --title="Enter PIN" | validate_pin || touch .fail )"
if [[ -f .fail ]] ; then
    do_stuff
fi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接