脚本名称叫test.sh 入参三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量)
[root@jfht ~]#declare -a names
[root@jfht ~]#names=Jack
[root@jfht ~]#echo ${names[0]}
Jack
[root@jfht ~]#names[1]=Bone
[root@jfht ~]#echo ${names[1]}
Bone
[root@jfht ~]#echo ${names}
Jack
[root@jfht ~]#echo ${names[*]}
Jack Bone
[root@jfht ~]#echo ${#names}
4
直接引用names,相当于引用names[0]
[root@jfht ~]#echo ${#names[*]}
2
[root@jfht ~]#echo ${names[@]}
Jack Bone
[root@jfht ~]#echo ${#names[@]}
2
[root@jfht ~]#declare -p names
declare -a names='([0]="Jack" [1]="Bone")'
[root@jfht ~]#
数组初始化:
注释:${#BUILDOPT_TARGET_ALL[@]} = 0
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_DTB
注释:${#BUILDOPT_TARGET_ALL[@]} = 1
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_FSBL
注释:${#BUILDOPT_TARGET_ALL[@]} =2
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_UBOOT
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_TIFIRMWARE
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_KERNEL
# Rootfs *needs* to be last one in, since it includes some or all of the above targets.
BUILDOPT_TARGET_ALL[${#BUILDOPT_TARGET_ALL[@]}]=$BUILDOPT_TARGET_ROOTFS
$? 前一条语句的返回值。一般用来有 前后逻辑关系的语句
uname -a | grep 'x86_64' 管道+grep命令
cat是显示文件夹的命令, 这个大家都知道,tac是cat的倒写, 意思也和它是相反的。 cat是从第一行显示到最后一行, 而tac是从最后一行显示到第一行, 而rev 则是从最后一个字符显示到第一个字符。 |