2

関数がスクリプトパラメーターで明示的に呼び出されていない場合、スクリプト関数からbashスクリプトパラメーターにアクセスする方法はありますか?

ありがとう。

4

3 に答える 3

0

簡単な答えは「いいえ、私が知っていることではありません」です。

実行する必要がある場合は、スクリプト引数のエイリアスを作成します。

#!/bin/bash
script_args=("$@")
myfunc () {
    for a in "$@" ; do
        for b in "${script_args[@]}" ; do
            echo "$a: $b"
        done
    done
}

myfunc one two

そして、次のように呼び出します。

./myscript.sh 1 2

出力:

one: 1
one: 2
two: 1
two: 2
于 2012-06-25T11:53:54.573 に答える
0

いいえ。ただし、Linuxを使用している場合は、スクリプトのコマンドラインを `/proc'から読み取ることでハッキングできます。

function myfunc {

    while read -d $'\0' 
    do 
        echo "$REPLY"
    done < /proc/$$/cmdline
}

-d $'\0'文字列はNULL(2進ゼロ)で区切られているため、はcmdlineファイルを読み取るために必要です。この例で$REPLYは、bash自体を含む各パラメーターが順番になります。例えば:

/home/user1> ./gash.sh one two three
/bin/bash
./gash.sh
one
two
three

関数のパラメーターをスクリプトのパラメーターに設定する(そしてそれらを表示する)例を次に示します。

function myfunc {

    while read -d $'\0' 
    do
        args="$args $REPLY"
    done < /proc/$$/cmdline

    set -- $args
    shift 2      # Loose the program and script name
    echo "$@"
}
于 2012-06-25T12:32:05.787 に答える
0

スクリプトの引数を使用して関数を呼び出すだけです。

foo () {
    for arg in "$@"
    do
        echo "$arg"
    done
}

foo "$@"
于 2012-06-26T11:19:57.750 に答える