shell变量及引号

变量

变量不需要声明,初始化不需要指定类型
变量命名
1:不能使用程序中的关键字(保留字)
2:只能使用数字,字母和下划线,且不能以数字开头
3:建议命令要通俗易懂
显示变量值使用echo命令 ,加上$变量名,也可以使用${变量名}
例如:echo $JAVA_HOME
或者echo ${JAVA_HOME}

变量的分类


本地变量、环境变量、局部变量、位置变量、特殊变量

本地变量

只对当前shell进程有效的,对当前进程的子进程和其它shell进程无效。
定义:VAR_NAME=VALUE
变量引用:${VAR_NAME}
取消变量:unset VAR_NAME
相当于java中的私有变量(private),只能当前类使用,子类和其他类都无法使用。

环境变量
''单引号不解析变量
""双引号会解析变量
``反引号是执行并引用一个命令的执行结果,类似于$(...)


自定义的环境变量对当前shell进程及其子shell进程有效,对其它的shell进程无效
定义:export VAR_NAME=VALUE
对所有shell进程都有效需要配置到配置文件中
vi /etc/profile
source /etc/profile
相当于java中的protected修饰符,对当前类,子孙类,以及同一个包下面可以共用。

局部变量
在函数中调用,函数执行结束,变量就会消失
对shell脚本中某代码片段有效
定义:local VAR_NAME=VALUE

相当于java代码中某一个方法中定义的变量,只对这个方法有效。

位置变量
$1,$2,.....${10}....
test.sh 3 89
$0:脚本自身
$1:脚本的第一个参数
$2:脚本的第二个参数
相当于java中main函数中的args参数,可以获取外部参数。

特殊变量
$?:接收上一条命令的返回状态码
返回状态在0-255之间
$#:参数个数
$*:或者$@:所有的参数
$$:获取当前shell的进程号(PID)(可以实现脚本自杀)(或者使用exit命令直接退出也可以使用exit [num])

单引号、双引号、反引号
''单引号不解析变量
""双引号会解析变量
``反引号是执行并引用一个命令的执行结果,类似于$(...)

你可能感兴趣的:(linux,shell,脚本)