Shell 重定向 - 对话框
Shell redirection - dialog
我无法解释代码blow
exec 3>&1
INTERFACE=`echo $DIALOG_TAGS | xargs dialog --title 'Test' --menu ' Text comes here :' 0 0 0 2>&1 1>&3`
exec 3>&-
: > $TMPDIR/._tmp.conf
我的问题是; FD#3 使用 exec 3>&1
创建并重定向到 FD#1 所在的位置。在第二行,我们有 2>&1 1>&3
这让我很困惑。
另一部分是最后一行,其中 :
和 >
重定向发生。
任何解释将不胜感激!
谢谢
exec 3>&1
创建 FD #3,写入 FD #1 (stdout
)。
INTERFACE=`echo $DIALOG_TAGS | xargs dialog --title 'Test' --menu ' Text comes here :' 0 0 0 2>&1 1>&3`
backtics中的命令被执行。 (在本例中,dialog
菜单显示 DIALOG_TAGS
中定义的标签/项目对。)
FD #2 (stderr
) 被重定向到 FD #1(stdout
,由于反引号,它被分配给 INTERFACE
)。 FD #1 (stdout
) 被重定向到 FD #3。
思路如下:
dialog
显示一个菜单,您可以从中 select 一个项目。显然,菜单需要 stdout
才能写入。默认情况下,菜单中的 result (selection) 写入 stderr
.
- 作者想要捕获结果,因此他将
stderr
重定向到&1
,所以结果在INTERFACE
中结束。
- 但是他想要只结果,而不是整个菜单...所以他没有捕获菜单和结果,而是重定向 菜单 (
stdout
) 到先前创建的 stdout
的 copy,只留下 result 被发送到 FD #1,因此存储在 INTERFACE
中,而菜单正在通过 FD #3 显示(它仍然指向终端,不管反引号如何) .
完成后...
exec 3>&-
FD #3 已关闭,因为不再需要它。
: > $TMPDIR/._tmp.conf
这个,我看不懂。冒号是一个内置命令,除了参数扩展和重定向之外什么都不做。它创建一个空文件...?也许是为了向其他程序表明 selection 已生成...?或者保留时间戳...?不知道。
我无法解释代码blow
exec 3>&1
INTERFACE=`echo $DIALOG_TAGS | xargs dialog --title 'Test' --menu ' Text comes here :' 0 0 0 2>&1 1>&3`
exec 3>&-
: > $TMPDIR/._tmp.conf
我的问题是; FD#3 使用 exec 3>&1
创建并重定向到 FD#1 所在的位置。在第二行,我们有 2>&1 1>&3
这让我很困惑。
另一部分是最后一行,其中 :
和 >
重定向发生。
任何解释将不胜感激! 谢谢
exec 3>&1
创建 FD #3,写入 FD #1 (stdout
)。
INTERFACE=`echo $DIALOG_TAGS | xargs dialog --title 'Test' --menu ' Text comes here :' 0 0 0 2>&1 1>&3`
backtics中的命令被执行。 (在本例中,dialog
菜单显示 DIALOG_TAGS
中定义的标签/项目对。)
FD #2 (stderr
) 被重定向到 FD #1(stdout
,由于反引号,它被分配给 INTERFACE
)。 FD #1 (stdout
) 被重定向到 FD #3。
思路如下:
dialog
显示一个菜单,您可以从中 select 一个项目。显然,菜单需要stdout
才能写入。默认情况下,菜单中的 result (selection) 写入stderr
.- 作者想要捕获结果,因此他将
stderr
重定向到&1
,所以结果在INTERFACE
中结束。 - 但是他想要只结果,而不是整个菜单...所以他没有捕获菜单和结果,而是重定向 菜单 (
stdout
) 到先前创建的stdout
的 copy,只留下 result 被发送到 FD #1,因此存储在INTERFACE
中,而菜单正在通过 FD #3 显示(它仍然指向终端,不管反引号如何) .
完成后...
exec 3>&-
FD #3 已关闭,因为不再需要它。
: > $TMPDIR/._tmp.conf
这个,我看不懂。冒号是一个内置命令,除了参数扩展和重定向之外什么都不做。它创建一个空文件...?也许是为了向其他程序表明 selection 已生成...?或者保留时间戳...?不知道。