Я пытаюсь найти способ не иметь пробелов между элементами массива bash, которые я использую для команды AWS CLI. Фильтр для команды жалуется, что фильтр должен быть в формате '--filters name = string1, values = string1, string2'.Удалить пробелы между элементами массива bash
Код, который я в настоящее время до сих пор:
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,
для следующей команды фильтра работать. Все, что я искал, это удаление пробелов в строке, превращение строки в массив или документация на массивы вообще, и я не видел подобного вопроса в любом месте.
EDIT:
Я добавил оператор печати анубхава в в мой код таким образом, что
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»
Это работает для получения вывод массива, но мне нужен сам массив, чтобы быть в этом формате. – user2642953
Массив имеет только отдельные элементы. Вы также замечаете конечные пробелы в отдельных элементах? Попробуйте напечатать его так: 'echo '@ $ {resource_id [0]} @" 'для проверки. – anubhava