Linux
從不使用 getopt 的腳本中傳遞 getopt 的參數
我有一個腳本(我們稱之為
scriptC
),用於getopt
解析短選項和長選項並且工作正常。該腳本的呼叫方式如下:
scriptA
執行使用適當參數的scriptB
呼叫。scriptC
問題:是否可以將相同的參數作為參數傳遞給
scriptA
,然後最終傳遞給scriptC
?腳本被稱為:
scriptB "$@"
並且scriptB
最終確實如此scriptC —param1 —param2
如果像這樣
scriptA
打電話scriptB
scriptB "$@"
然後用於呼叫的命令行參數
scriptA
將被傳遞給,scriptB
前提是這些參數在呼叫之前沒有被更改。從
scriptB
to的呼叫也是如此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