2

AWS CLI コマンドに使用している bash 配列の要素間にスペースを入れないようにする方法を見つけようとしています。コマンドのフィルターは、フィルターが「--filters name=string1,values=string1,string2」の形式である必要があると不平を言っています。

私が現在持っているコード:

tag_filter=( $(aws ec2 describe-tags --filter "name=value,values=${tags[@]}" | jq '[.Tags[] | {ResourceId}]') )
regex=[[:alpha:]][-][[:xdigit:]]
for x in ${tag_filter[@]}
do
  if [[ $x =~ $regex ]]
  then
    #parameter expansion to remove " from elements
    resource_id+=( "${x//\"}," )
    #$resource_id== "${resource_id_array[@]// /,}" 
  else
    throw error message
  fi
done
echo "${resource_id[@]}"

の出力が得られます

foo-bar, herp-derp, bash-array,

しかし、それはする必要があります

foo-bar,herp-derp,bash-array,

次のフィルター コマンドが機能するようにします。私の検索で思いついたのは、文字列内のスペースを削除する、文字列を配列に変換する、または配列に関するドキュメント全般であり、同様の質問はどこにも見当たりません。

編集 :

コードに anubhava の print ステートメントを追加しました。

then
  #parameter expansion to remove " from elements
  resource_id_array+=( "${x//\"}," )
  resource_id= $( printf "%s" "${resource_id_array[@]}" )
  resource_id= ${resource_id:1}
  #${resource_id[@]}== "${resource_id[@]// /,}" 
else

これで必要な出力が得られますが、「$resource_id」をエコーし​​た後にスクリプトを実行すると、「:command not found エラー」が表示されます

4

2 に答える 2