2015-11-16 62 views
-1

我正在使用Linux Ubuntu服務器。如何在啓動Linux腳本時按名稱設置多個變量輸入

在那裏,我想運行一個名爲hello.sh的腳本。

而我想通過名稱傳遞多個參數,同時執行腳本。

喜歡的東西,

./hello.sh -name=abc -age=33 

和 腳本會像

echo My name is $name and I'm $age yrs old. 

...................... ..................................

所以,我的問題是,這可能嗎?如果是的話,那該怎麼做?

回答

0

不正是你有問題,但你可以使用這樣的事情:

fn() { 
    declare "[email protected]"; 
    echo "My name is $name and I'm $age yrs old."; 
} 

fn name=abc age=33 

輸出:

My name is abc and I'm 33 yrs old. 

PS:你必須確保使用合法的變量命令行中的名稱。

0
#!/bin/bash                   

set -eu   # Exit on errors and unbound variables. 
args=(name age) 

_IFS=$IFS 
IFS='|' 
pattern="${args[*]}" 
IFS=$_IFS 

error() { 
    echo "$1" >&2 
    exit $2 
} 

while (($#)) ; do 
    if [[ $1 == -*=* ]] ; then 
     var=${1%%=*}       # Everything up to the first =. 
     if [[ $var != [email protected]($pattern) ]] ; then # Only the listed arguments allowed. 
      error "Unknown parameter $var" 2 
     fi 

     val=${1#*=} 
     declare ${var#-}=$val    # It's now safe to create the variable. 
     shift 
    else 
     error "Invalid parameter format: $1" 1 
    fi 
done 

echo "My name is $name and I'm $age years old." 
相關問題