0

スクリプトの外部で関数を実行しようとしています。例 test.sh:

DAYS=10
IP=1.2.3.4

Main {
   functionName ${DAYS} ${IP}
   }

 functionName() {
   echo $1
   echo "$2"
   }

コマンドラインから、さまざまなパラメーターでスクリプト関数を実行しようとしています

./test.sh functionName 4 "1.3.4.5"

それを機能させるのに苦労しているので、どんなアイデアでも素晴らしいでしょうありがとう

4

2 に答える 2

1

関数内の $1 は、スクリプトに渡される引数ではなく、関数に渡される引数です。ただ行う:

DAYS=${1-10}    # set DAYS to first argument, defaulting to "10"
IP=${2-1.2.3.4} # set IP to 2nd argument, defaulting to "1.2.3.4"

Main() {
    functionName ${DAYS} ${IP}
}

functionName() {
    echo $1
    echo "$2"
}
Main
于 2012-07-04T12:59:26.217 に答える
1

スクリプトをsource作成すると、現在のシェルで関数を使用できるようになります。

. ./test.sh
functionName 4 "1.3.4.5"

欠点は、関数内にないソース スクリプト内のコードが実行されることです。(ソーススクリプトで)次のようなテストを行うことで、それを回避できます。

if [[ $0 == test.sh ]] 
then 
    Main
fi

あなたがメインを持っている理由は何ですか?ところで、なぜグローバル変数を使用しているのですか? Main 内で ( を使用して) それらを宣言しないのはなぜですかlocal

于 2012-07-04T11:08:47.400 に答える