重定向程序的结果



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

./program param1 param2  > result1.txt

但不奇怪

cat result1.txt

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

谢谢

您可以在另一个脚本中包含您的行,如:

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"

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

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

相关内容

最新更新