首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在bash shell中将一个字符串拆分成至少由一个空格分隔的多个字符串?

如何在bash shell中将一个字符串拆分成至少由一个空格分隔的多个字符串?
EN

Stack Overflow用户
提问于 2009-09-24 13:07:37
回答 9查看 466.2K关注 0票数 281

我有一个包含许多单词的字符串,每个单词之间至少有一个空格。如何将字符串拆分成单独的单词,以便循环遍历它们?

字符串作为参数传递。例如,${2} == "cat cat file"。我怎么才能遍历它?

另外,如何检查字符串是否包含空格?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-09-24 05:13:46

您是否尝试过将字符串变量传递给for循环?例如,Bash将自动拆分为空格。

sentence="This is   a sentence."
for word in $sentence
do
    echo $word
done
This
is
a
sentence.
票数 325
EN

Stack Overflow用户

发布于 2012-11-16 00:52:59

我喜欢转换为数组,以便能够访问单个元素:

sentence="this is a story"
stringarray=($sentence)

现在您可以直接访问单个元素(从0开始):

echo ${stringarray[0]}

或者转换回字符串以进行循环:

for i in "${stringarray[@]}"
do
  :
  # do whatever on $i
done

当然,前面已经回答了直接遍历字符串的问题,但这个答案的缺点是不能跟踪单个元素以供以后使用:

for i in $sentence
do
  :
  # do whatever on $i
done

另请参见Bash Array Reference

票数 362
EN

Stack Overflow用户

发布于 2009-09-25 16:15:32

只需使用内置的shell "set“即可。例如,

set $text

在那之后,$text中的单个单词将是$1、$2、$3等。

set -- junk $text
shift

处理$text为空或以破折号开头的情况。例如:

text="This is          a              test"
set -- junk $text
shift
for word; do
  echo "[$word]"
done

这是打印

[This]
[is]
[a]
[test]
票数 96
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1469849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档