重定向程序的结果

时间:2015-05-18 10:18:31

标签: linux shell

我使用命令行运行程序。输出是一个文件。我必须使用各种参数运行程序,所以我总是要更改输出文件名(否则它将始终相同,旧的将自动删除)并一次又一次地运行程序。我试过了:

./program param1 param2  > result1.txt

但并不奇怪

cat result1.txt

运行程序。我需要一个命令行,它将在程序结束时自动重命名输出文件。 我无法更改程序代码。

由于

2 个答案:

答案 0 :(得分:4)

您可以将您的行封装在另一个执行以下操作的脚本中:

PARAM_1="$1"
PARAM_2="$2"

CMD="./program"

$CMD $PARAM_1 $PARAM_2 > "result-${PARAM_1}-${PARAM_2}"

脚本调用您的命令并将输出重定向到名称取决于输入参数的文件名

这适用于2个参数,但可以很容易地推广

<强>更新 我只是使用MD5作为输出文件名的不同版本,因此即使是冗长,杂乱的参数也会保持一致,并且它对任意数量的参数都有效:

#!/bin/bash

HASH="$(echo "$@" | md5sum | cut -f1 -d' ')"
CMD="./program"

"$CMD" "$@" > "result-$HASH.txt"

答案 1 :(得分:2)

使用纳秒日期值重命名输出文件名为:

mv result.txt "result-$(date --rfc-3339=ns).txt"

在脚本的末尾。