我想将表达式('if'语句)的输出重定向到文件中。例如。我想将'./primitives'的输出重定向到一个文件,其中'if'语句的表达式是'./primitive',类似于:
if ./primitives 1>> output.txt ; then
echo "primitives OK. " | tee -a output.txt
fi
以上内容不起作用,所以从:
开始if ./primitives ; then
echo "primitives OK. "
fi
如果'./primitives'正确执行,如何将'./primitives'输出到文件中,然后只回显字符串“primitives OK。”
对于奖励点,如果正确执行,我将如何仅重定向附加到文件'output.txt'的'./primitives'的STDOUT,然后将“原语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.
答案 0 :(得分:0)
你的第一个例子很好;您只需要确保output.txt
首先存在。您有两个选择:使用>
而不是>>
(1是不必要的,因为如果您不提供文件描述符,默认会重定向标准输出),或者之前执行touch output.txt
如果文件尚不存在,则使用if
语句创建文件。