我正在为for循环中的数组赋值:
aws_user_roles+=("$aws_role_name")
如果我从命令中分配数组的值,并想去掉换行符,我可以去:
readarray -t aws_roles < <(...some aws commands...)
我的for循环看起来像这样:
for ((has_role_index=0;has_role_index<${#aws_user_has_roles[@]};++has_role_index)); do
aws_user_roles+=("$aws_role_name")
declare -p aws_user_roles
done
如何从aws_user_roles
中的数组元素中去掉换行符并将其替换为空格?
使用tr
:
aws_user_roles+=("$(<<<"$aws_role_name" tr 'n' ' ')")
$(..)
是命令替换<<<"$variable"
是here字符串tr 'n' ' '
用换行符代替空格
使用模式替换:
aws_user_roles+=("${aws_role_name//$'n'/ }")
来自man bash
:
${parameter/pattern/string}
图案替换。模式被扩展以产生一个模式,就像在路径名扩展中一样。参数被展开,模式与其值的最长匹配将被字符串替换。如果模式以/开头,则所有匹配的模式都将替换为字符串。通常只有第一场比赛被替换