Shell

位置參數的性質

  • August 20, 2018

我寫了這個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"

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