linux - 重定向程序的结果

标签 linux shell

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

./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/

相关文章:

linux - 使用 ls 列出子目录

linux - ls命令用于搜索当前目录中的特定文件

php - 我可以在没有 ssh 访问权限的情况下在 PHP 中使用 shell_exec 或反引号吗?

Linux Shell if-statements 关于分析字符串是否相等

mysql - 重新配置mysql会删除之前的所有数据库吗?

python - Linux BC : Decimal/Floating Calculation NOT Accurate

Linux 内核 dentry 和 inode

c++ - 如何在 Qt Linux 中捕获挂起事件

sql - 如何阻止 Postgres 将记录创建详细信息输出到终端(rails c/dev 模式)? 100 0's of "放慢了我的程序

linux - 从 shell 脚本连接到 FTP 并从文件夹中获取最后 14 个文件