You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何将数组元素加引号并无尾空格输出?

问题

现有Bash数组arr1=("a" "b" "c" "d" "e" "f"),需要输出格式为AA_ENABLE_HOOKS=("a" "b" "c" "d" "e" "f")。之前用printf生成带引号的元素时,末尾会多出一个空格,目前靠sed去除尾空格临时解决,想知道有没有更直接的替代实现方式。

替代实现方法
  • 分阶段printf输出
    先打印开头和第一个元素,再对剩余元素统一添加前缀空格和引号,最后补全结尾部分,从根源避免尾空格:

    printf 'AA_ENABLE_HOOKS=("%s"' "${arr1[0]}"
    printf '" "%s"' "${arr1[@]:1}"
    printf '")\n'
    
  • 先构建带引号的数组再拼接
    先遍历原数组,给每个元素加上双引号存入新数组,再用空格连接新数组元素并组合成目标格式:

    quoted_elements=()
    for item in "${arr1[@]}"; do
        quoted_elements+=("\"$item\"")
    done
    echo "AA_ENABLE_HOOKS=( ${quoted_elements[*]} )"
    

    注:${quoted_elements[*]}会用默认空格连接数组元素,不会产生尾空格。

  • 利用IFS参数扩展拼接
    通过临时修改IFS的值,让数组元素直接按" "的格式拼接,再嵌入到目标输出模板中:

    printf 'AA_ENABLE_HOOKS=( "%s" )\n' "$(IFS='" "'; echo "${arr1[*]}")"
    

内容的提问来源于stack exchange,提问作者Kalib Zen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:10:43