0

コードスニペットはここにあります:

  #!/usr/bin/ksh

   diff(){
     awk 'BEGIN {RS=ORS= }
            {NR==FNR?a[$0]++:a[$0]--}
                   END{for(k in a)if(a[k])print k}' < (echo -n "${!1}") < (echo -n "${!2}")
   }

                   Array1=( key1 key2 key3 key4 key5 key6 key7 key8 key9 key10 )
                  Array2=( key1 key2 key3 key4 key5 key6 )
                  Array3=($(diff Array1[@] Array2[@]))
                  echo ${Array3[@]}

そして私はエラーに直面しています

syntax error at line 6 : `(' unexpected
4

2 に答える 2

0

あなたが言及した構文エラーは、<使用する必要があるプロセス置換のために、の後のスペースが原因です。

<(echo -n "${1}") <(echo -n "${2}")

非常に疑わしい (構文エラーが発生する) ため、ここ!で何を達成しようとしているのかわかりません。

また、配列を関数に渡すのではなく、名前だけを渡します。もしかして:

Array3=($(diff "${Array1[@]}" "${Array2[@]}"))

もちろん、配列を関数に渡すことはできません。リストのみです。

diff同じ名前の標準ユーティリティ プログラムがあり、混乱を招く可能性があるため、独自の関数を呼び出すことはお勧めできません。

于 2012-12-27T12:22:00.653 に答える