不仅仅是一个问题,这是对“另一种方法”的请求。
实际上,如果我想在另一个命令中使用前一个命令的结果,我使用:
R1=$("cat somefile | awk '{ print $1 }'" )
myScript -c $R1 -h123
然后,“更好的方式”是:
myScript -c $("cat somefile | awk '{ print $1 }'" ) -h123
但是如果我必须多次使用结果怎么办?让我们说:使用$R1
几次,这两个选项是:
选项1
R1 = $(“cat somefile | awk'{print $ 1}'”)
myScript -c $R1 -h123 -x$R1
选项2
myScript -c $("cat somefile | awk '{ print $1 }'" ) -h123 -x $("cat somefile | awk '{ print $1 }'" )
您是否知道另一种方法来“存储”上一个命令/脚本的结果并将其用作另一个命令/脚本的参数?
答案 0 :(得分:0)
当然,还有其他方法。他们只是不是更好的方式。
首先,您可以将答案存储在一个文件中,然后多次捕获该文件的内容。
其次,您可以将结果传递给bash函数,如:
callMyScript() {
myScript -c "$1" -h123 -x "$1"
}
如此调用:
callMyScript "$(awk '{ print $1; }' somefile)"
几乎完全相同,只是保存到局部变量。
所以你对使用awk感兴趣吗?你可以让awk为你生成一行,并让bash运行它:
eval $(awk '{ printf "myScript -c %s -h123 -x %s\n", $1, $1; }' somefile)
但现在我们只是变得愚蠢,甚至在概念上也没有什么不同,只是简单地存入变量。
我的建议:使用变量。
答案 1 :(得分:0)
另一种不完美的方式:
源脚本#1,然后当脚本#2运行时,#1中声明的所有变量都可用于#2。
#!/bin/ksh
. myScript -c $("cat somefile | awk '{ print $1 }'" ) -h123
myScript2
您最好的选择是一个包装脚本,可以为您保留所有变量,就像其他人已经注意到的一样。
在bash中,源内置命令与'dot'相同