0

関数の引数として配列を渡し、配列に新しい要素を追加したいと思います。次に、配列を別の関数に渡し、その内容を出力します。(これはすべてBashで行われます。)

syntax error near unexpected token `"$2"'
`        $1+=("$2")'

$おそらく、変数に値を割り当てるときに使用できないため、これが私が得るすべてです。この問題を解決する方法がわかりません。手伝って頂けますか?

これが私のアプローチです:

#/bin/bash

add_element()
{
    $1+=("$2")
}

print_array()
{
    for i in "${$1[@]}"
    do
        echo "$i"
    done
}

declare -a ARRAY

add_element ARRAY "a"
add_element ARRAY "b"
add_element ARRAY "1,2"
add_element ARRAY "d"

print_array ARRAY
4

1 に答える 1

1

間接展開を使用した可能性があります。

#/bin/bash

add_element()
{
    local a="$1[@]"
    a=( "${!a}" )
    printf -v "$1[${#a[@]}]" "%s" "$2"
}

print_array()
{
    local a="$1[@]"
    printf '%s\n' "${!a}"
}

declare -a array

add_element array "a"
add_element array "b"
add_element array "1,2"
add_element array "d"

print_array array

コメント:

  • 本当に醜いです。なぜあなたがそれを望んでいるのか分かりません。bashはこのようなことを行うようには設計されていないことを理解してください。代わりに、php、perl、javaなどを使用したい場合があります。
  • bashでは大文字の変数名を使用しないでください。それは非常に悪いバッシュの習慣と考えられています。それは醜いです。特に他の変数と衝突する可能性がある場合はひどいです。誰かがmapfileビルトイン(デフォルトではARRAY)という名前の配列に格納されている場合は、ここに当てはまる可能性があります。
  • あなたがしようとしていることを達成するために、別のものを使用することを検討してください。実際、bashではこのような関数は必要ありません。
于 2012-12-22T09:54:47.690 に答える