文字列配列の要素にアクセスする - stray@シンボル

文字列配列の要素にアクセスする - stray@シンボル

配列(3つの要素)を作成しました。各要素にはカンマで区切られた文字列が含まれています。配列は、ファイルを1行ずつ読み取ることによって生成されます。ファイルには、データベースから出力されたフィールドが含まれています。各文字列要素が配列のように繰り返されるように、以下のコードを書きました。

配列の最後の要素に追加の@記号がある奇妙なバグを除いて、これはうまくいきます。

(また、Macでbash 4を使用していると判断しましたが、-Aが機能しないと述べました。)

i=0
declare -a items
while read line
    do
        items[i]=$line
    ((i++))
    done < test_file1.txt

declare -a item_arr
for item in "${items[@]}"
   do
     item_arr=($item[@])
   done
echo "${item_arr[4]}://${item_arr[1]}:${item_arr[3]}@${item_arr[2]}/control/configinfo"

出力は次のとおりです。 https[@]://192.168.1.152:username@pwd/control/configinfo

@シンボルが印刷されるのはなぜですか?時間を無駄にしていますか? awkを使うべきですか?そうでなければ、これは非常に単純なアプローチのように感じますが、これは比較的経験が不足している可能性があります。初期化する必要がある項目の最大数はおそらく1〜200です。

私のコードの目的は、各プロジェクトのカールリクエストを作成するために、データベースからいくつかのconfig_info、ユーザー名、パスワード、IPアドレス、プロトコルをすべて取得するカールリクエストを生成することです。

よろしくお願いします!

ベストアンサー1

itemはスカラー文字列変数(配列ではない)なので、次のように話す必要があります。

item_arr=($item)

代わりに

item_arr=($item[@])

もし$itemそうThe quick brown fox

item_arr=($item[@])

~になる

item_arr=(The quick brown fox[@])

おすすめ記事