一个小问题,困扰初学者的我很久。
先上一段代码:
#!/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
结论如下:如果在数组赋值时,没有使用“()”,那么在取数组的长度时,就会出错。可能还要其他意想不到的错误。所以为了保险起见,还是使用“()”把值括起来。