0

我想将表达式('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,然后将“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.
4

1 回答 1

0

你的第一个例子很好;你只需output.txt要先确保它存在。您有两个选择:使用>而不是>>(1 是不必要的,因为如果您不提供文件描述符,默认情况下会重定向标准输出),或者touch output.txt在您的if语句之前执行以创建文件(如果文件尚不存在)。

于 2013-02-24T20:28:41.507 回答