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

如何在Shell脚本中将字符串转换为单个字符元素的数组?

在Shell脚本中将字符串拆分为单个字符的数组

Bash 4.0+ 版本(推荐)

用readarray配合fold命令可以快速实现,fold -w1会把字符串按单个字符拆分,每行输出一个字符,再用readarray读入数组:

# 定义目标字符串
str="apple"
# 将字符串拆分后存入数组
readarray -t array < <(fold -w1 <<< "$str")

# 按需求格式验证输出
for idx in "${!array[@]}"; do
    echo "array[$idx]=${array[$idx]}"
done

兼容旧版Bash(无readarray时)

通过循环逐个截取字符串的单个字符,存入数组:

str="apple"
array=()
# 遍历字符串的每个索引位置
for ((i=0; i<${#str}; i++)); do
    # 截取从i开始的1个字符,加入数组
    array+=("${str:i:1}")
done

# 按需求格式验证输出
for idx in "${!array[@]}"; do
    echo "array[$idx]=${array[$idx]}"
done

Zsh 版本

Zsh有更简洁的语法,直接用参数展开就能拆分:

str="apple"
# 按空字符拆分字符串为数组
array=(${(s::)str})

# 按需求格式验证输出
for idx in "${!array[@]}"; do
    echo "array[$idx]=${array[$idx]}"
done

你之前用IFS没效果是正常的——IFS是用来指定分隔符拆分字符串的,你的目标字符串里没有预设的分隔符(空格、逗号这类),所以没法靠它拆分单个字符,得用上面这些针对单字符拆分的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:05:33