有一个我用命令行运行的程序。输出是一个文件。我必须使用各种参数运行程序,所以我总是必须更改输出文件名(否则它将始终相同,旧的将自动删除)并一次又一次地运行程序。我试过了:
./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"
关于linux - 重定向程序的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300591/