bash – 使用空格将字符串(存储在变量中)分割成多个单词,而不是双引号内的空格

前端之家收集整理的这篇文章主要介绍了bash – 使用空格将字符串(存储在变量中)分割成多个单词,而不是双引号内的空格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为我写一个复杂的脚本,我的目标是做以下事情。我有一个字符串进来,看起来像这样:
2012 2013 "multiple words"

我的目标是将这些每一个都放在一个由空格分割的数组中,但只能用于单个字匹配,而不是双引号。应该考虑一个字。所以我的想法是这样做两步。首先匹配那些倍数的单词,从字符串中删除那些,然后在另一个由空格分割的迭代中。
不幸的是,我找不到如何回应比赛的帮助。到目前为止我有这个:

array=$(echo $tags | sed -nE 's/"(.+)"/\1/p')

但这将导致(在OS X上):

2012 2013 multiple words

预期结果:

array[1]="2012"
array[2]="2013"
array[3]="multiple words"

我将如何解决这类问题?

谢谢。

eval是邪恶的,但这可能是其中很方便的情况之一
str='2012 2013 "multiple words"'
eval x=($str)
echo ${x[2]}
multiple words

或者更新版本的bash(在4.3上测试)

s='2012 2013 "multiple words"'
declare -a 'a=('"$s"')'
printf "%s\n" "${a[@]}"
2012
2013
multiple words
原文链接:https://www.f2er.com/bash/387427.html

猜你在找的Bash相关文章