shell 代码如下
#!/bin/bash
while read line
do
string=$line
str=${string//|/ }
echo str 长度: ${#str[@]}
for each in ${str[*]}
do
echo $each
done
echo ------赋值给 arr-----
arr=($str)
echo arr 长度:${#arr[@]}
for each in ${arr[*]}
do
echo $each
done
done
执行
sh split.sh <<< '1|2|3|4|5|6|7'
结果
str 长度: 1
1
2
3
4
5
6
7
------赋值给 arr-----
arr 长度:7
1
2
3
4
5
6
7
shell 写的不多,很奇怪为啥 str 长度是 1 呢?明明有 7 个元素啊😵
1
dengtongcai OP 是不是 arr=($str)把类型改了?我看网上很多代码都没这句,取长度时候不对。
|
2
aijam 2019-01-06 15:47:28 +08:00
> str="abc"; echo ${#str[@]}
1 > str="abc"; echo ${#str} 3 |
3
dengtongcai OP @aijam 我脚本里的 str arr 内容应该是一样的吧?
|
4
aijam 2019-01-06 16:32:58 +08:00 1
str 是"1 2 3",字符串
arr 是(1 2 3),数组 再举个例子: > str="1 2 3"; arr=(0 $str 4) > echo ${arr[*]} 0 1 2 3 4 |
5
dengtongcai OP @aijam 明白了😢,谢谢。
|