Bash - 将命令行参数保存到outfile中

时间:2014-02-14 14:01:33

标签: linux bash unix sh

我有一个脚本可以为第二个脚本创建随机命令行参数。然后我将第二个输出保存到文件中。如何在第二个脚本中包含命令行参数及其生成的输出?以下命令仅保存输出:

./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >output.log 2>&1

结果是一个很长的数字,例如。 12993943999193949399

如何在文件顶部附加完整的命令行?

3 个答案:

答案 0 :(得分:1)

您可以先保存命令行,然后追加输出。

echo "./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114" >output.log
./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >>output.log 2>&1

答案 1 :(得分:1)

您可以为此创建一个功能:

log() {
    echo "$*" >> output.log
    "$@" >> output.log 2>&1
}

log ./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114

"$*"log创建所有参数的单个字符串,而"$@"log的每个参数创建一个正确引用的字符串(即log cmd "a b" c将调用{ {1}}使用两个参数而不是三个。)

或者,您可以使用cmdset -x来重定向标准输出,但我永远不会记住确切的语法,因此上面的解决方案是Better(TM)。

答案 2 :(得分:0)

如果您的脚本 generator.sh “回显”了某些内容,您可以执行以下操作:

./generator.sh | cat - output.log > temp && mv temp output.log 

此文件output.log

中的生成器前置输出

如果你的文件非常大,这可能会很昂贵..所以你也可以使用 sed 命令。