您的位置:首页 > 运维架构 > Shell

SHELL 数组:数组赋值中符号使用不正确(应该严格按"()"赋值),赋值后不能正确求出数组的长度。

2018-02-06 00:48 405 查看
一个小问题,困扰初学者的我很久。

先上一段代码:

#!/bin/bash
clear
num=`cat tmp.txt|xargs`
echo "********数字数组********"
for i in ${num[@]}
do
echo $i
done
echo "数组是"${num[@]}
echo "数组是"${num[*]}
echo "个数是"${#num[*]}
echo "个数是"${#num[@]}
echo ${num[2]}
unset num
echo "********数字数组********"
echo "********字符串数组********"
num1="this is a good day"
for i in ${num1[@]}
do
echo $i
done
echo ${num1[@]}
echo ${num1[*]}
echo ${#num1[*]}
echo ${#num1[@]}
echo ${num1[2]}
unset num1
echo "********字符串数组********"
echo "********字符串数组2********"
num2=(1 2 3 4 5 6 7)
for i in ${num2[@]}
do
echo $i
done
echo ${num2[@]}
echo ${num2[*]}
echo ${#num2[*]}
echo ${#num2[@]}
echo ${num2[2]}
echo "********字符串数组2********"
echo "********字符串数组3********"
num3=(it is a good day)
for i in ${num3[@]}
do
echo $i
done
echo ${num3[@]}
echo ${num3[*]}
echo ${#num3[*]}
echo ${#num3[@]}
echo ${num3[2]}
echo "********字符串数组3********"
执行后结果

********数字数组********
34
21
13
8
5
3
2
1
1
数组是34 21 13 8 5 3 2 1 1
数组是34 21 13 8 5 3 2 1 1
个数是1
个数是1

********数字数组********
********字符串数组********
this
is
a
good
day
this is a good day
this is a good day
1
1

********字符串数组********
********字符串数组2********
1
2
3
4
5
6
7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
7
7
3
********字符串数组2********
********字符串数组3********
it
is
a
good
day
it is a good day
it is a good day
5
5
a


结论如下:如果在数组赋值时,没有使用“()”,那么在取数组的长度时,就会出错。可能还要其他意想不到的错误。所以为了保险起见,还是使用“()”把值括起来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐