繁体   English   中英

Bash脚本-stdout文件描述符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM