将字符串拆分为数组Shellscript

时间:2012-04-12 19:18:17

标签: arrays shell

如何在shell脚本中将字符串拆分为数组?

我尝试使用IFS='delimiter',它适用于循环(for, while),但我需要来自该字符串的数组。

如何从字符串中创建数组?

谢谢!

4 个答案:

答案 0 :(得分:22)

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变量的更改。

答案 1 :(得分:20)

#!/bin/bash

str=a:b:c:d:e
arr=(${str//:/ })

输出:

echo ${arr[@]}
a b c d e

答案 2 :(得分:7)

找到一个不需要更改IFS或循环的解决方案:

str=a:b:c:d:e
arr=(`echo $str | cut -d ":"  --output-delimiter=" " -f 1-`)

输出:

echo ${arr[@]}
a b c d e

答案 3 :(得分:1)

将上面的答案组合成适合我的东西

set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "$@"; do echo $i; done

给出

# set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "$@"; do echo $i; done
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
#