Bash,迭代带有空格的变量中的单词

问题描述 投票:0回答:1

我有以下脚本:

#!/bin/sh

fruits="apple \"orange juice\" banana"

IFS=" " read -a words <<< "$fruits"
for word in "${words[@]}"
do
    echo "Word: $word"
done

产生以下结果:

Word: apple
Word: "orange
Word: juice"
Word: banana

它将句子“橙汁”分成两个单词。我想实现以下输出:

Word: apple
Word: orange juice
Word: banana

但是我无法让它按我想要的方式工作。这里有什么问题吗?

以下内容按预期工作:

#!/bin/sh

for word in apple "orange juice" banana
do
    echo "Word: $word"
done

所以我期待用

"${words[@]}"
进行数组扩展可以达到目的,但它不起作用。任何想法?谢谢!

bash whitespace
1个回答
0
投票

这可能有帮助:

fruits='apple"orange juice"banana'
IFS='"' words=($fruits)
for word in "${words[@]}"; do
  echo "Word: $word";
done

输出:

词语:苹果
词语: 橙汁
词语: 香蕉
© www.soinside.com 2019 - 2024. All rights reserved.