我有以下bash
脚本:
STDIN='&0'
if some-condition; then
STDIN=some-filename
fi
run-command <${STDIN}
但那个错误与&0: No such file or directory
.
同样对于STDOUT
.
我尝试过使用eval
,但也没有成功。
需要做什么才能使其发挥作用?
我有以下bash
脚本:
STDIN='&0'
if some-condition; then
STDIN=some-filename
fi
run-command <${STDIN}
但那个错误与&0: No such file or directory
.
同样对于STDOUT
.
我尝试过使用eval
,但也没有成功。
需要做什么才能使其发挥作用?
“文件句柄”只是文件描述符的编号。在这种情况下是这样的
0
。对于文件名,您可以打开文件名以接收其句柄。使用 eval 是邪恶的。不要使用它。
对于脚本局部变量,首选小写变量。
exec {var}>file
您可以在 bash 文档第二段中阅读https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Redirections。使用 shellcheck 检查您的脚本。
您甚至可以在 wiki https://en.wikipedia.org/wiki/File_descriptor /上阅读有关文件描述符的信息
STDIN='/dev/stdin' # 默认为标准输入
如果有某种条件;然后
STDIN='某个文件名'
菲
同样,对于 STDOUT
STDOUT='/dev/stdout' # 默认为标准输出
如果有其他条件;然后
STDOUT='其他文件名'
菲
运行命令 <"$STDIN" >"$STDOUT"