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

使用while命令分割字符串失效,寻求解决方法

问题解决:Bash按可配置分隔符分割字符串

你的脚本无法分割字符串的原因是:read -r name默认读取整行内容,即便设置了IFS='|',但仅当指定多个变量时,IFS才会用于分割字段。单一变量会接收整行输入,所以输出原样。

以下是几种可行的解决方法:

方法一:利用数组分割遍历

#!/bin/bash
IFS='|' read -ra names <<< "one|two|three"
for name in "${names[@]}"; do
    echo "$name"
done
  • 用read -ra将分割后的内容存入数组names,再通过循环逐个输出数组元素。

方法二:用tr命令替换分隔符

echo "one|two|three" | tr '|' '\n'
  • 直接将字符串中的|替换为换行符,快速实现每行一个元素的输出。

方法三:用read -d按分隔符逐段读取

#!/bin/bash
str="one|two|three"
while IFS= read -r -d '|' name; do
    echo "$name"
done <<< "$str|"
  • read -d '|'以|作为读取终止符,在输入字符串末尾追加|确保最后一个元素也能被读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:52:34