如何将字符串拆分为数组?
#!/bin/sh
例如
str="field 1,field 2,field 3,field 4"
数组的长度是多种
找到了很多解决方案,但它们只适用于bash
仅当数组的长度有4个值时才有效,但是如果它有10个值呢?
for循环似乎不起作用
arr=$(echo "field 1,field 2,field 3,field 4" | awk '{split($0,a,","); print a[1],a[2],a[3],a[4]}');
for value in ${arr[@]}
do
echo "$value\n"
done
答案 0 :(得分:2)
要在dash(不支持数组)中拆分变量,请使用:
string="field 1,field 2,field 3,field 4"
IFS=","
set -- $string
for val
do
echo "$val"
done
答案 1 :(得分:0)
在bash中你可以这样做:
str="field 1,field 2,field 3,field 4"
IFS=, array=($str)
IFS
是输入字段分隔符。
Zsh更优雅
array=${(s:,:)str}
你甚至可以直接这样做
% for i in "${(s:,:)str[@]}"; do echo $i; done
field 1
field 2
field 3
field 4