首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解bash exec {logout}?

了解bash exec {logout}?
EN

Stack Overflow用户
提问于 2016-02-24 17:16:02
回答 1查看 200关注 0票数 3

下面的Bash命令是做什么的?

代码语言:javascript
复制
exec {logout}> >(tee -a "${LOGFILE}")

代码语言:javascript
复制
exec {logout}>> "${LOGFILE}"
EN

回答 1

Stack Overflow用户

发布于 2016-02-24 18:08:12

来自关于redirections的Bash参考

可以在文件描述符号之前的每个重定向可以改为由{varname}形式的单词来代替。在这种情况下,对于除>&-<&-之外的每个重定向操作符,shell将分配一个大于10的文件描述符,并将其分配给{varname}

案例中的

exec {logout}> >(tee日志文件“${ -a }”)

Bash将打开一个新的文件描述符,将相应的整数赋给变量logout,并将此文件描述符链接到进程替换

tee日志文件“${ -a }”

输入此命令后,可以检查变量logout是否已分配给整数。然后,每次您将一个流重定向到文件描述符$logout时,它将被馈送到tee

#!/ "$logfile"

  • The /bash logfile=testlogfile exec {logout}> >(tee -a " $logfile ") echo "logout=$logout“#现在将一些内容输出到fd $logout: echo >&"$logout”“你好文件描述符$logout”#它会将消息发送给tee,这样您就可以在标准输出中看到它#并且还会被附加到$logfile#检查输出是否真的到达了$logfile: cat echo第二种情况类似,但这一次,进入文件描述符$logout的输出将只被追加到$logfile (而不是传递到tee,所以你不会在标准输出上看到它)。

在此之后,您实际上不需要关闭文件描述符,它将在脚本(或会话)结束时自动关闭;但如果您真的想关闭它:

代码语言:javascript
复制
exec {logout}>&-

您可以检查使用打开的文件描述符

代码语言:javascript
复制
ls /dev/fd
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35597860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档