我使用命令行运行程序。输出是一个文件。我必须使用各种参数运行程序,所以我总是要更改输出文件名(否则它将始终相同,旧的将自动删除)并一次又一次地运行程序。我试过了:
./program param1 param2 > result1.txt
但并不奇怪
cat result1.txt
运行程序。我需要一个命令行,它将在程序结束时自动重命名输出文件。 我无法更改程序代码。
由于
答案 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"
在脚本的末尾。