Bash - 将脚本作为另一个脚本的参数传递

6
我在SO上没有找到类似的问题。
我应该如何将bash脚本正确地作为另一个bash脚本的参数传递?
例如,假设我有两个脚本可以接受多个参数,我想将一个脚本作为另一个脚本的参数传递。类似于这样:
./script1 (./script2 file1 file2) file3

在上面的示例中,script2将file1和file2合并在一起,并回显一个新文件,但这与问题无关。我只想知道如何将 script2 作为参数传递,即正确的语法。
如果不可能,任何提示如何规避问题都是合适的。

你打算如何在将script2“传递”给script1之后使用它? - Tom Fenech
目前,我不太确定我使用的script1只是迭代参数的所有内容。但是,我只是想弄清楚如何将脚本作为参数传递,因为它对我来说无效。 - buydadip
2
我仍然不清楚你的目标是什么,或者将脚本作为参数传递到底意味着什么。参数只是字符串。你可能想在某个时候运行script2并传递文件名file1file2。传递此操作的结果是否足够? - Tom Fenech
我想要实现的基本上就是@Cameron Martin的答案。 - buydadip
2
那么,为什么你接受了其他的答案呢? - Tom Fenech
显示剩余3条评论
2个回答

5
如果您想将脚本2的评估结果作为参数传递,请使用$()。请记得要加引号。
./script1 "$(./script2 file1 file2)" file3

7
"评估"指的是将标准输出作为单个参数捕获。 - kojiro

4

如果你想将script2作为参数传递给script1,以在后者中执行它,只需将以下代码放入script1中,并像这样调用script1

./script1 "./script2 file1 file2" file3  # file4 file5
中的代码:
$1 # here you're executing ./script2 file1 file2
shift
another_command "$@" # do anything else with the rest of params (file3)

如果你知道 script2 参数的数量且是固定的,也可以按照以下方式操作:

./script1 ./script2 file1 file2 file3  # file4 file5
中的代码:
"$1" "$2" "$3"
shift 3
another_command "$@" # do anything else with the rest of params (file3)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接