我在 bash 脚本中看到了这一点,并试图理解它:
exec {STDIN}>&0
exec {STDOUT}>&1
exec {STDERR}>&2
bash 脚本中的指令是否可以识别{STDIN}
等{STDOUT}
“魔术字符串” ?exec
无论如何,STDOUT不是已经设置为&1
(并且 STDERR 设置为&2
,...)吗?
这些线有什么作用?
我在 bash 脚本中看到了这一点,并试图理解它:
exec {STDIN}>&0
exec {STDOUT}>&1
exec {STDERR}>&2
bash 脚本中的指令是否可以识别{STDIN}
等{STDOUT}
“魔术字符串” ?exec
无论如何,STDOUT不是已经设置为&1
(并且 STDERR 设置为&2
,...)吗?
这些线有什么作用?
来自
man bash
:所以你的例子中的行:
具有分配三个新文件描述符的效果,它们是当前描述符 0、1 和 2 的副本,并将这些新描述符的值分别分配给 shell变量
$STDIN
和。执行这些命令后,您应该能够看到重复描述符的值:$STDOUT
$STDERR
这样做的最可能的原因是保存 stdin、stdout 和 stderr 的当前配置,以便脚本可以根据脚本的某些部分的需要将描述符 0、1 和 2 自由重定向到不同的位置,然后将它们恢复到它们的通过执行以下操作来实现原始目标: