我有一个脚本(我们称之为scriptC
),用于getopt
解析短选项和长选项并且工作正常。
该脚本的调用方式如下:
scriptA
运行并使用正确的参数scriptB
进行调用。scriptC
问题:是否可以将相同的参数作为实参传递给scriptA
,然后最终将它们传递给scriptC
?
这些脚本的调用方式如下:最终
scriptB "$@"
在scriptB
其中scriptC —param1 —param2
答案1
如果像这样scriptA
调用scriptB
scriptB "$@"
那么用于调用的命令行参数scriptA
将被传递,scriptB
前提是这些参数在调用之前没有被更改。
scriptB
对于从到 的呼叫也是如此scriptC
。
只要 和scriptA
不scriptB
尝试解释、更改或以其他方式改变 的内容$@
(或各个位置参数$1
、$2
等$3
),命令行参数将被传递到scriptC
以便用 进行解析getopt
。
使用函数而不是脚本的示例(其工作方式相同):
#!/bin/sh
scriptC () {
printf 'Arg: %s\n' "$@"
}
scriptB () {
scriptC "$@"
}
scriptA () {
scriptB "$@"
}
scriptA -param1 -param2
这将产生输出
Arg: -param1
Arg: -param2
进行呼叫
scriptA "hello world" --param1 /etc/passwd --param2
将产生
Arg: hello world
Arg: --param1
Arg: /etc/passwd
Arg: --param2
也就是说,参数将不加修改地传递给scriptC
。然后使用或其他方式scriptC
解释参数。getopt
getopts