0

私はbash関数を持っていますfoo ()

いくつかのパラメーターを文字列で渡します。user=user1 pass=pwd address=addr1 other= パラメーターが見つからないか、ランダムなシーケンスで渡される可能性があります。内部に適切な値を割り当てる必要がありますfoo

USER=...
PASSWORD=...
ADDRESS=...

どうすればいいですか?

grep複数回使用できますが、この方法は良くありません。

foo ()
{
  #for USER
  for par in $* ; do 
    USER=`echo $par | grep '^user='` 
    USER=${USER#*=} 
  done
  #for PASSWORD
  for ...
}
4

1 に答える 1

0

これはあなたが意味するものですか?

#!/bin/sh
# usage: sh tes.sh username password addr

# Define foo
# [0]foo [1]user [2]passwd [3]addr
foo () {
    user=$1
    passwd=$2
    addr=$3
    echo ${user} ${passwd} ${addr}
}

# Call foo
foo $1 $2 $3

結果:

$ sh test.sh username password address not a data
username password address

あなたの質問はここでもすでに回答されています:

パラメータを Bash 関数に渡す


どうやら上記の回答は質問とは関係ないようですが、これはどうですか?

#!/bin/sh

IN="user=user pass=passwd other= another=what?"

arr=$(echo $IN | tr " " "\n")

for x in $arr
do
    IFS==
    set $x
    [ $1 = "another" ] && echo "another = ${2}"
    [ $1 = "pass" ] && echo "password = ${2}"
    [ $1 = "other" ] && echo "other = ${2}"
    [ $1 = "user" ] && echo "username = ${2}"
done

結果:

$ sh test.sh
username = user
password = passwd
other =
another = what?
于 2013-05-16T09:08:08.217 に答える