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 エラー」が表示されます