2

同じことをする 256 個の関数を作成したい

基本的に、大文字と小文字を区別せずに呼び出せる関数が必要です。

applepie()例:大文字と小文字を区別せずに呼び出せるようにしたい:

applepie(){

for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah 
# more stuff ...   
done

}

最も簡単な方法は、別の 255 個の関数を大文字で囲んで宣言することです。

Applepie(){

for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah 
# more stuff ...   
done

}

aPplepie(){

for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah 
# more stuff ...   
done

}

...

ずっと

APPLEPIE(){

for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah 
# more stuff ...   
done

}

全部で 256 (2 の 8 乗) あります。

迅速に行うことは可能ですか?または、次のような「組み込み」のアプローチがありますか

case-insensitive appelepie(){

for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah 
# more stuff ...   
done

}

またはそれのようにすることは可能ですか

case-insensitive APPLEPIE(){
  command -pass_all_parameters applepie
}

forループを使用する代わりに、すべてのパラメータをapplepieに渡すことができますfor B in "$@";か?

4

3 に答える 3

0

純粋な bash と再帰関数を使用する別の方法を次に示します。私は通常、再帰関数が表示されると 1 マイルも走りますが、この場合は非常にうまく機能します。

funcname="applepie"

function cr {
    if [ "$1" ]; then
        cr "${1:1:${#1}}" "${2:1:${#2}}" "${3}${1:0:1}"
        cr "${1:1:${#1}}" "${2:1:${#2}}" "${3}${2:0:1}"
    else
        alias $3=$funcname
    fi
}

cr $funcname $(tr '[a-z]' '[A-Z]' <<< $funcname) ""
于 2013-10-23T04:46:33.950 に答える