-2

かっこを付けて関数を呼び出すことにより、シェルで関数を実行するにはどうすればよいですか。

my_func()
{
    echo $0
    echo $1
} 

my_func("aa","bb")

そんなことはありません

my_func "aa" "bb"
4

3 に答える 3

7

できません。なぜ他の言語の構文をシェルに適用したいのですか?

于 2013-03-06T18:30:58.937 に答える
1

かっこで関数を呼び出すことにより、シェルで関数を実行するにはどうすればよいですか?

これを試して:

my_func "(" ")"
于 2013-03-06T18:21:06.130 に答える
1

(ほとんどのシェルでは、bashを含めることはできません。)また、空のフォームを除いて()、予約済みの制御演算子です。エスケープしたり引用したりすることはできますが、それはほとんど役に立ちません。

{ } ブレースの拡張を少し乱用することができます:

my_func {1,2,3}   

{1,2,3}他の機能もありますが、「123」に展開されます。中に(引用符で囲まれていない)スペースがないことを確認する必要があります。これ{1, 2, 3}はそのままの状態で扱われます。文字通りのコンマは引用符で囲むか、\エスケープする必要があります。関数名の後にスペースが必要です。そうしないと、かなり異なる動作をします。

または、本当にゲームをプレイしたい場合は、 (別名)の動作[ ]とはまったく異なり、重要な解析を犠牲にして、を誤用することもできます。これは、理由を示す不完全ですが、まずまずの例です。[test

function my_func () 
{
   local IFS=" ,"
   set -- $*; 

   for ((ff=1; ff<=$#; ff++)); do
         printf "\$%i=<%s>  " $ff "${!ff}"
    done
    printf "\n"
}

my_func [ "a",b,c ]
my_func [ 1, 2 ,3 ]

bashそうではありませんtcl...2つ以上の異なる言語として有効なプログラムを作成しようとしている場合は、代わりに多言語プログラムを検索する必要があります。

私はまだandandに置き換える{}BEGINEND方法に取り組んでいます。

于 2013-03-06T18:41:37.307 に答える