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

Linux Bash-将命令行参数保存到outfile中,linux,bash,unix,sh,Linux,Bash,Unix,Sh,我有一个为第二个脚本创建随机命令行参数的脚本。然后,我将第二个输出保存到一个文件中。如何将第二个脚本中使用的命令行参数及其生成的输出包括在内?下面的命令仅保存输出: ./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >output.log 2>&1 结果是一个长数字,例如12993943999193949399 如何在文件顶部追加使用的完整命令行?您可以先保存命令行,然后追加输出 echo "./ascpsc -l1=209

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

./ascpsc -l1=20901 -l2=22134 -l3=fvs1S -l4=221114 >output.log 2>&1
结果是一个长数字,例如12993943999193949399


如何在文件顶部追加使用的完整命令行?

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

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

您可以为此创建一个函数:

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
将使用两个参数而不是三个参数调用
cmd


或者,您可以使用
set-x
exec
重定向stdout,但我永远记不清确切的语法,因此上面的解决方案更好(TM)。

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

./generator.sh | cat - output.log > temp && mv temp output.log 
在文件output.log中预先结束生成器的输出

如果你的文件很大,这可能会很贵。。因此,您也可以使用sed命令