一、变量分类
1)用户自定义变量
2)环境变量
3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
4)预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
二、变量设置规则
1)变量名称可以由字母,数字和下划线组成,但是不能以数字开头。如果变量名是2name则错误的。
2)在bash中,变量的默认类型都是字符串类型。如果要进行数值运算,则必须指定变量类型为数值型。
3)变量用等号连接,等号左右两侧不能有空格!!!
4)变量的值如果有空格,需要使用单引号或双引号括。
5)在变量的值中,可以使用""转义符。
6)如果需要增加变量的值,那么可以进行变量的叠加。不过变量需要用双引号包含。如:mypath=${mypath}/mydir或者mypath="$(pwd)"/mydir或者mypath="$(pwd)/mydir"
7)命令的结果可以作为值赋于变量(mypath=$(pwd);echo $mypath),别环境变量名建议大写,便于区分。
8)调用变量:$mypath
删除变量:unset mypath
变量查看:set(查看所有变量) | grep 变量名
三、环境变量
用户自定义变量只在当前shell中生效,而环境变量会在当前shell和子shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。(知识点)
声明环境变量:export JAVA_HOME
查询环境变量:env | grep 环境变量。
unset 变量名。与删除自定义变量名一样。
四、位置参数变量
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${11}。
vim mynote.sh
#!/bin/bash
echo $0
echo $1
echo $2
chmod 755 mynote.sh
./mynote.sh 11 22 33
类似于 main函数中的main (String[] args)
$* 代表命令行中所有参数,$*把所有参数看成一个整体。
$@ 代表命令行中所有参数,不过$@把每个参数区分对待。
$*与$@的区别
#!/bin/bash
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个for循环中会循环一次
do
echo "The parameters is :$i"
done
x=1
for y in "$@"
#$@中的每个参数都看成是独立的,所以"$@"中有几个参数,就会循环几次
do
echo "The parameters is :$y"
x=$(($x+1))
done
$# 代表命令行中所有参数的个数。
五、预定义变量
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
例如:ls ; echo $?

$$ 当前进程的进程号(PID)
echo "$$"
$! 后台运行的最后一个进程的进程号(PID)
echo "$!"
网友评论