将字符串拆分为数组Shellllscript
如何在shell脚本中将字符串拆分为数组?将字符串拆分为数组Shellllscript
我试过IFS='delimiter'
,它与循环(for, while)
一起工作,但我需要该字符串的数组。
如何从字符串中创建数组?
谢谢!
str=a:b:c:d:e
IFS=:
ary=($str)
for key in "${!ary[@]}"; do echo "$key ${ary[$key]}"; done
输出
0 a
1 b
2 c
3 d
4 e
另一个(bash)的技术:
str=a:b:c:d:e
IFS=: read -ra ary <<<"$str"
这仅适用于读命令的持续时间限制变化的IFS变量。
实测值,不需要改变IFS或回路中的溶液:
str=a:b:c:d:e
arr=(`echo $str | cut -d ":" --output-delimiter=" " -f 1-`)
输出:
echo ${arr[@]}
a b c d e
这是行不通的...尝试做一个回声$ {arr [1]} – mhstnsc 2016-07-05 15:01:24
#!/bin/bash
str=a:b:c:d:e
arr=(${str//:/ })
OUTPUT:
echo ${arr[@]}
a b c d e
结合的答案上面的东西,工作f或者我
set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "[email protected]"; do echo $i; done
给
# set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "[email protected]"; do echo $i; done
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
#
对测试字符串使用$ PATH是一个很好的接触,但:方式太复杂了,这与[zzk's回答(https://stackoverflow.com/a/13784224/3789665)? – greybeard 2017-07-09 15:20:27
@greybeard tl; dr它没有:) - 我发现zzk的答案对我来说并不是很有用,所以通过'set --'调整它,然后从给出的多个答案中整理出有用的东西。这是为了我自己的目的,但也分享回来,如果其他人有同样的问题 – 2017-07-09 22:03:36
FWIW我需要对路径中列出的所有文件夹运行多个测试 - 主要是审计特权升级问题。 – 2017-07-09 22:10:07
它不工作。错误消息说预计“(”在它是ary的行=($ str)。 – 2012-04-12 19:51:06
这是特别的bash语法。你在用什么shell?如果脚本有'#!/ bin/sh'变成'#!/bin/bash' – 2012-04-12 20:12:07
我改变了这个,但是错误信息没有消失 – 2012-04-12 20:52:15