一、 变量
1、单引号和双引号的区别
单引号:
[root@localhost ~]# a=1
[root@localhost ~]# echo 'abc $a'
abc $a
双引号:
[root@localhost ~]# a=1
[root@localhost ~]# echo "abc $a"
abc
总结:
单引号中无法引用变量,会把变量当做字符串。双引号可以引用变量,且可以把变量的值取出来
2、在bash中可以使用没有被定义的变量,但什么都不会发生
[root@localhost ~]# echo $ddaa
3、变量拼接
[root@localhost ~]# a="hello"
[root@localhost ~]# echo ${a}_1
hello_1
4、预定义变量
[root@localhost ~]# echo $PWD
/root
[root@localhost ~]# echo $USER
root
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
二、数组
1、取出数组的元素和数组长度
[root@localhost ~]# a=(1 2 3 4 5)
[root@localhost ~]# echo $a
1
echo $a取出数组中第一个元素
[root@localhost ~]# echo ${a[@]}
1 2 3 4 5
[root@localhost ~]# echo ${a[*]}
1 2 3 4 5
echo ${a[@]}和echo ${a[*]}取出数组中所有的元素
[root@localhost ~]# echo ${#a[@]}
5
[root@localhost ~]# echo ${#a[*]}
5
echo ${#a[@]}和echo ${#a[*]}计算出数组的长度
2、反引号
[root@localhost ~]# a=`ls`
[root@localhost ~]# echo $a
1.sh 2.sh anaconda-ks.cfg
打印出所有的目录及文件
[root@localhost ~]# a=`pwd`
[root@localhost ~]# echo $a
/root
打印出当前所在目录的路径
3、预定义变量和数组
[root@localhost ~]# array=(`ls`)
[root@localhost ~]# echo $array
1.sh
$array:ls打印出的文件和目录的数组的第一个赋给array
[root@localhost ~]# echo ${array[@]}
1.sh 2.sh anaconda-ks.cfg
${array[@]}:取出ls数组中的所有元素(目录和文件)
[root@localhost ~]# echo ${array[0]}
1.sh
[root@localhost ~]# echo ${array[1]}
2.sh
${array[0]}:取出ls集合中的第一个元素
${array[1]}:取出ls集合中的第二个元素
[root@localhost ~]# echo ${a[-1]}
5
${a[-1]}:取出数组中最后一个元素