我有一个脚本可以为第二个脚本创建随机命令行参数。然后我将第二个输出保存到文件中。如何在第二个脚本中包含命令行参数及其生成的输出?以下命令仅保存输出:
./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >output.log 2>&1
结果是一个很长的数字,例如。 12993943999193949399
如何在文件顶部附加完整的命令行?
答案 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}}使用两个参数而不是三个。)
或者,您可以使用cmd
和set -x
来重定向标准输出,但我永远不会记住确切的语法,因此上面的解决方案是Better(TM)。
答案 2 :(得分:0)
如果您的脚本 generator.sh “回显”了某些内容,您可以执行以下操作:
./generator.sh | cat - output.log > temp && mv temp output.log
此文件output.log
中的生成器前置输出如果你的文件非常大,这可能会很昂贵..所以你也可以使用 sed 命令。