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

Bash:将带空格字符串拆分为两个变量的最简实现方法

最简Bash实现方法

你的问题出在对进程替换的误用上:<<($line) 会把变量里的内容当作命令去执行,所以bash会尝试运行foo这个不存在的命令,这就是报错的原因。

要把字符串拆分成两个变量,最简且可靠的写法是使用here-string(<<<),它能直接把字符串作为read的输入:

line="foo bar"
read foo bar <<< "$line"

执行完之后,$foo的值就是foo,$bar的值就是bar,而且这个操作是在当前shell环境下完成的,后续可以直接使用这两个变量。

如果你的场景允许子shell(比如只是在管道里临时用变量),也可以用管道写法,但要注意子shell的变量无法传递到父shell:

echo "$line" | read foo bar

不过这里更推荐here-string的写法,它不仅简洁,还避免了子shell的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:05:23