变量的赋值
#定义变量,注意等号两边没有任何空格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 variableunset 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_VERSION4.1.2(1)-release#变量HOSTNAME:主机名[root@TXY_host test]# echo $HOSTNAMETXY_host#变量HOSTTYPE:主机架构[root@TXY_host test]# echo $HOSTTYPEx86_64#变量MACHTYPE:主机类型的gnu标识[root@TXY_host test]# echo $MACHTYPEx86_64-redhat-linux-gnu#变量LANG:系统的语言环境[root@TXY_host test]# echo $LANGC#设置语言环境为中文# 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 $EUID0#变量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/bashfuncname(){ echo $FUNCNAME}funcname[root@TXY_host test]# bash funcname.shfuncname
特殊变量
1.位置参数
$0:预留保存实际脚本名字;无论脚本是否有参数,此值均可用。 $1-$9:第1—9个参数
${10}:位置参数大于9后的表示方法
$#:脚本参数的个数总和
$*/$@:表示脚本的所有参数
2. 特定的变量参数
$! Shell最后运行的后台Process的PID $- 显示shell使用的当前选项,与set命令功能相同 $$ 脚本运行的当前进程ID号
# cat aatest.sh#!/bin/bashecho $$# ./aatest.sh3520
3.命令返回值
执行一条命令后,
$? 值为0表示执行成功,非0则表示执行失败。
无论如何,没有人有办法把自己抑或他人的刺拔掉。那是一碰便痛的软肋,