首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Shell脚本中将字符串转换为数组

在Shell脚本中将字符串转换为数组
EN

Stack Overflow用户
提问于 2021-07-08 08:30:13
回答 4查看 605关注 0票数 0

我对bash和shell脚本非常陌生。我有一根绳子

代码语言:javascript
复制
string="new string added -value:ABC-10"

现在我想要的是在-value:之后得到字符串。

我正在使用bash 5。Things的列表尝试了

  1. IFS方法但这是语法错误:重定向unexpected
  2. array=(${string//:/ }(
  3. 在读取-r行时;do lines+=("$line");do <<<"$string"
  4. string='Paris,France,Europe';readarray -td,a <<<"$string";声明-p a;

除了IFS之外,其他所有解决方案都给出了语法错误"(“预期”}“),我和尝试了所有可能的组合,但都没有成功。

任何帮助都是非常感谢的。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-07-08 08:45:56

这是直接与bash。试着:

代码语言:javascript
复制
printf "%s\n"  "${string##*-value:}"

bash的男人

${parameter#word} ${parameter##word}删除匹配的前缀模式。该单词被展开以产生一个模式,就像在路径名称展开中一样,并使用下面模式匹配下面描述的规则与参数的扩展值相匹配。如果模式与参数值的开头匹配,则展开的结果是删除参数的扩展值,并删除最短匹配模式(#'' case) or the longest matching pattern (the##‘大小写)。如果参数为@或*,则模式移除操作依次应用于每个位置参数,扩展为结果列表。如果参数是以@或*订阅的数组变量,则模式删除操作依次应用于数组的每个成员,扩展是结果列表。

票数 3
EN

Stack Overflow用户

发布于 2021-07-08 08:42:38

使用cutawk如何?

代码语言:javascript
复制
echo "$string" | awk -F '-value:' '{print $2}'

使用cut,您只能在单个字符上拆分,因此在剪切时,它会希望:

代码语言:javascript
复制
echo "$string" | cut -d ":" -f 2
票数 0
EN

Stack Overflow用户

发布于 2021-07-08 09:14:09

使用IFSread

代码语言:javascript
复制
string="new string added -value:ABC-10"

IFS=: read -r junk value <<< "$string"
echo "$value"

使用mapfile,又名readarray,这是一个bash4+特性。

代码语言:javascript
复制
mapfile -td: array <<< "$string"
echo "${array[@]:1}"

这也相当于

代码语言:javascript
复制
echo "${array[1]}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68298092

复制
相关文章

相似问题

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