[shell基础]——变量
变量的赋值
#定义变量,注意等号两边没有任何空格 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.2(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-8 #变量PWD:当前目录 [root@TXY_host test]# echo $PWD /shell/test #变量OLDPWD:上一次访问目录 [root@TXY_host test]# echo $OLDPWD /shell #变量EUID:显示当前用户的UID [root@localhost ~]# echo $EUID 0 #变量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则表示执行失败。