Linux

從不使用 getopt 的腳本中傳遞 getopt 的參數

  • May 22, 2018

我有一個腳本(我們稱之為scriptC),用於getopt解析短選項和長選項並且工作正常。

該腳本的呼叫方式如下:

scriptA執行使用適當參數的scriptB呼叫。scriptC

問題:是否可以將相同的參數作為參數傳遞給scriptA,然後最終傳遞給scriptC

腳本被稱為:

scriptB "$@"並且scriptB最終確實如此scriptC —param1 —param2

如果像這樣scriptA打電話scriptB

scriptB "$@"

然後用於呼叫的命令行參數scriptA將被傳遞給,scriptB前提是這些參數在呼叫之前沒有被更改。

scriptBto的呼叫也是如此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

引用自:https://unix.stackexchange.com/questions/445267