如何在bash脚本中创建列表追加值并输出逗号分隔格式适配.env文件
Bash数组输出为Python风格逗号分隔列表的解决方案
你现有代码里arr+=$val的写法是将值直接拼接为字符串,而非向数组中新增元素,正确的数组追加元素写法为arr+=("$val"),外层引号可以避免值中包含空格时被拆分。
方案1:临时修改IFS实现分隔(推荐)
IFS是Bash的内置字段分隔符,临时修改为逗号即可快速生成逗号分隔的格式:
arr=() while [ 你的循环判断条件 ] do # 你的业务逻辑代码 val='some value' # 正确追加元素到数组 arr+=("$val") done # 临时设置IFS为逗号 IFS=, # 输出时前后包裹方括号即可得到目标格式 echo "[${arr[*]}]" # 恢复IFS默认值,避免影响后续代码 unset IFS
如果你的元素本身没有单引号,需要自动为每个元素包裹单引号,可以加一步预处理:
quoted_arr=() for item in "${arr[@]}"; do quoted_arr+=("'$item'") done IFS=, echo "[${quoted_arr[*]}]" unset IFS
方案2:用sed替换实现(无需修改IFS)
如果不想改动全局的IFS配置,可以通过sed对输出内容做文本替换实现:
# 输出数组后先把空格替换为',',再在首尾补全['和'] echo "${arr[@]}" | sed -e "s/ /','/g" -e "s/^/['/" -e "s/$/']/"
注意:该方案仅适用于元素本身不包含空格的场景,如果元素带空格请用方案1
内容的提问来源于stack exchange,提问作者swarna
相关产品推荐
相关产品推荐

