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

一个小问题,困扰初学者的我很久。

先上一段代码:

#!/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

结论如下:如果在数组赋值时,没有使用“()”,那么在取数组的长度时,就会出错。可能还要其他意想不到的错误。所以为了保险起见,还是使用“()”把值括起来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值