如何在shell脚本中将字符串拆分为数组?
我尝试过IFS='delimiter',它适用于循环,(for, while)但我需要一个来自该字符串的数组.
如何从字符串中创建数组?
谢谢!
gle*_*man 24
str=a:b:c:d:e
set -f
IFS=:
ary=($str)
for key in "${!ary[@]}"; do echo "$key ${ary[$key]}"; done
Run Code Online (Sandbox Code Playgroud)
输出
0 a
1 b
2 c
3 d
4 e
Run Code Online (Sandbox Code Playgroud)
另一种(bash)技术:
str=a:b:c:d:e
IFS=: read -ra ary <<<"$str"
Run Code Online (Sandbox Code Playgroud)
这仅限于读命令持续时间内对IFS变量的更改.
小智 20
#!/bin/bash
str=a:b:c:d:e
arr=(${str//:/ })
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
echo ${arr[@]}
a b c d e
Run Code Online (Sandbox Code Playgroud)
找到一个不需要更改IFS或循环的解决方案:
str=a:b:c:d:e
arr=(`echo $str | cut -d ":" --output-delimiter=" " -f 1-`)
Run Code Online (Sandbox Code Playgroud)
输出:
echo ${arr[@]}
a b c d e
Run Code Online (Sandbox Code Playgroud)