例如,如果我分配
TWO=2
...以下失败(带有date: invalid date '2'
):
date >> logfile $TWO>&1
当然,我总能做到
eval "date >> logfile $TWO>&1"
这是运行包含流重定向的表达式的唯一方法,其中至少一些文件描述符显示为变量?
例如,如果我分配
TWO=2
...以下失败(带有date: invalid date '2'
):
date >> logfile $TWO>&1
当然,我总能做到
eval "date >> logfile $TWO>&1"
这是运行包含流重定向的表达式的唯一方法,其中至少一些文件描述符显示为变量?
你可以做
5<&"$fd"
: 在任何类似 Bourne 的 shell 中将 fd 复制到 fd 5(其中 5 是文字)上(但请注意,当 yash 处于 posix 模式时,如果未打开以供阅读$fd
,则该操作将不起作用)。$fd
{fd}<&-
: 关闭$fd
zsh、bash、ksh93 中的fd但是您不能这样做
"$fd">anything
,因为您不想echo "$something">file
不输出$something
into的内容,file
如果该内容恰好只包含十进制数字。在 zsh、bash 和 ksh93 中,您可以使用
{fd}> something
9 以上的 fd 自动分配并存储到$fd
中,但这不是您要的。据我所知,除了使用
eval
.您只能
eval
使用以下方法将使用限制为重定向exec
:在
fish
shell 中也是同样的情况。在
rc
和派生类中也是如此,其中语法为>[3=5]
,并且两个 fd 都必须是字面量。