变量的赋值
#定义变量,注意等号两边没有任何空格
variable=
#定义环境变量
export variable=
#双引号:可含空格、可转义特殊字符
variable=" "
#$() 或 反引号:将命令结果赋值给变量
variable=$( )
variable=` `
#将变量值赋值给变量
gg=$aa$bb
变量的取值
#取值
$variable
#标准写法,建议使用此方法
${variable} #示例:
#DAY=sunday
#echo $DAY
sunday
# echo "hello sunday"> $DAY_file.txt
# ls # echo "hello sunday"> ${DAY}_file.txt
# ls sunday_file.txt
变量的取消与查看
#unset:取消变量和函数
unset variable
unset function
#env 查看系统所有的环境变量
#set 查看所有的系统预设变量+用户自定义变量
局部变量/用户变量
局部变量:只在当前的shell中有效;
用户变量:针对与当前用户有效, .bashrc 下可以查看。
全局变量/环境变量
当前创建变量的shell即为父shell,全局变量可以从父shell传递到子shell、孙shell···
注意环境变量只能向下传递而不能向上传递。
一些常见的预设变量(可通过 man bash查看):
#变量BASH:显示当前的bash shell
[root@localhost shell]# echo $BASH
/bin/bash #变量BASH_VERSION:显示当前bash shell版本
[root@localhost shell]# echo $BASH_VERSION
4.1.()-release #变量HOSTNAME:主机名
[root@TXY_host test]# echo $HOSTNAME
TXY_host #变量HOSTTYPE:主机架构
[root@TXY_host test]# echo $HOSTTYPE
x86_64 #变量MACHTYPE:主机类型的gnu标识
[root@TXY_host test]# echo $MACHTYPE
x86_64-redhat-linux-gnu #变量LANG:系统的语言环境
[root@TXY_host test]# echo $LANG
C
#设置语言环境为中文
# export LANG=zh_CN.UTF- #变量PWD:当前目录
[root@TXY_host test]# echo $PWD
/shell/test #变量OLDPWD:上一次访问目录
[root@TXY_host test]# echo $OLDPWD
/shell #变量EUID:显示当前用户的UID
[root@localhost ~]# echo $EUID #变量CDPATH:可以快速进入此目录
#cd时会首先查看当前目录是否有network-scripts,若没有则进入CDPATH定义的目录
[root@localhost shell]# CDPATH="/etc/sysconfig"
[root@localhost shell]# cd network-scripts
/etc/sysconfig/network-scripts #变量FUNCNAME:用在函数内,显示当前函数名
[root@TXY_host test]# cat funcname.sh
#/bin/bash
funcname()
{
echo $FUNCNAME
}
funcname [root@TXY_host test]# bash funcname.sh
funcname
特殊变量
1.位置参数
$0:预留保存实际脚本名字;无论脚本是否有参数,此值均可用。
$1-$9:第1—9个参数
${10}:位置参数大于9后的表示方法
$#:脚本参数的个数总和
$*/$@:表示脚本的所有参数
2. 特定的变量参数
$! Shell最后运行的后台Process的PID
$- 显示shell使用的当前选项,与set命令功能相同
$$ 脚本运行的当前进程ID号
# cat aatest.sh
#!/bin/bash
echo $$
# ./aatest.sh
3520
3.命令返回值
执行一条命令后,
$? 值为0表示执行成功,非0则表示执行失败。