BASH计算输出重定向
我想将表达式(if语句)的输出重定向到文件中。例如,我想将“./primitives”的输出重定向到一个文件中,“if”语句的表达式为“./primitives”,类似于:BASH计算输出重定向,bash,Bash,我想将表达式(if语句)的输出重定向到文件中。例如,我想将“./primitives”的输出重定向到一个文件中,“if”语句的表达式为“./primitives”,类似于: if ./primitives 1>> output.txt ; then echo "primitives OK. " | tee -a output.txt fi 上述方法不起作用,因此从以下几点开始: if ./primitives ; then echo "primitives OK. " fi
if ./primitives 1>> output.txt ; then
echo "primitives OK. " | tee -a output.txt
fi
上述方法不起作用,因此从以下几点开始:
if ./primitives ; then
echo "primitives OK. "
fi
如何将“./primitives”的输出放入一个文件中,然后只回显字符串“primitives OK”。如果“./primitives”执行正确
另外,如果文件“output.txt”执行正确,我如何仅重定向附加到文件“output.txt”的“/primitives”的标准输出,然后将“primitives OK.”打印到控制台和附加到文件的?但是,如果“./primitives”没有正确执行,请不要将任何内容打印到“output.txt”,而只将STDERR打印到控制台
还是我用错误的方式看待整个问题
谢谢
编辑:
当前脚本和输出为:
脚本:
#!/bin/bash
if ./compile.sh; then
echo "Compile OK. " | tee output.txt
if ./primitives 1>> output.txt ; then
echo "primitives OK. " | tee -a output.txt
fi
if ./composites 1>> output.txt ; then
echo "composites OK. " | tee -a output.txt
fi
fi
当前控制台输出:
Compile OK.
Compile OK.
primitives OK.
composites OK.
所需控制台输出:
Compile OK.
Compile OK.
primitives OK.
composites OK.
你的第一个例子很好;您只需要首先确保
output.txt
存在。您有两个选项:使用
而不是>
(1是不必要的,因为如果您不提供文件描述符,默认情况下会重定向标准输出),或者在if
语句之前执行touch output.txt
,如果文件不存在,则创建该文件。是否将原语的输出添加到output.txt
?如果是这样,则显示primitives
以非零退出代码退出,阻止If
语句体执行。primitives
以零代码正确退出执行,但是echo没有在output.txt或控制台中输出,因此可能我使用了tee
错误?有什么想法吗?我要一个谷歌。谢谢,我不认为这是误用了tee
,因为当我注释管道并只留下echo
,控制台和output.txt仍然没有输出任何内容。如果说if/原语1>>output.txt;然后
取而代之的是?/primitives
返回非零,但它似乎仍在正确执行,一定是出了其他问题。不管怎样,泰