Shell
位置參數的性質
我寫了這個shell腳本,這讓我有點困惑……
function func { the variables received are echo $0: $1 and $2 } echo in the main script func ball boy
腳本的名稱是 shell.txt 我希望結果是
func : ball and boy
然而我得到了
./shell.txt :ball and boy
我讀過位置參數本質上是“本地的”,那麼這個結果是怎麼來的?
在 bash 中保留了一些變數,例如 $ 0 which gives the command name – in this instance it is the name of the script (hence ./shell.txt). Another example is $ $ which will give the process ID. I believe that $ FUNCNAME 應該列印正在使用的函式的名稱。
格式中的任何變數 $ 1 $ 2 $3 等將是您傳遞給它的任何位置參數。
如果您刪除了 $ 0 variable and replaced it with $ FUNCNAME 你會得到你正在尋找的輸出。
這是一個簡短的腳本,讓我們將其保存為 passVariables.sh(我們使用 .sh 來表明它是一個 shell 腳本——純粹是表面的,但它有助於保持直截了當):
#!/bin/bash echo "The first word is $1 and the second word is $2"
現在,如果我這樣執行它:
./passingVariables.sh apple orange
它會吐出以下內容:
"The first word is apple and the second word is orange"