[英]Bash script - stdout file descriptor?
我的脚本中包含以下内容:
OUTFILE=./output.log
echo "foo" >> ${OUTFILE}
当OUTFILE
是实际文件路径时,它可以正常工作。 但是,有时我想通过修改OUTFILE
来查看stdout上的输出,但是它不起作用。 我尝试将1
和&1
都加引号和不加引号,并将其留空。
它只是一直告诉我:
./foo.sh: line 2: ${OUTFILE}: ambiguous redirect
我猜你想做其中之一
OUTFILE=./output.log
echo "foo" >> "${OUTFILE}"
OUTFILE=/dev/stdout
echo "foo" >> "${OUTFILE}"
要不就
echo "foo"
OUTFILE=./output.log
echo "foo" | tee "${OUTFILE}"
使用/dev/stdout
作为您的文件名。 (请参阅“> / dev / stdout”的可移植性 。)
由于解析顺序问题,您不能在变量中使用&1
。 在执行变量扩展之前 ,将搜索重定向令牌。 因此,当您使用时:
$ o='&1'
$ echo >$o
Shell会扫描重定向运算符,并看到>
重定向运算符而不是>&
运算符。 (而且没有>>&
运算符,因此无论如何您的追加示例都无法使用。尽管较新版本的bash确实有&>>
运算符可用于>> file 2>&1
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.