bash主要的变量类型有:
用户自定义变量、环境变量、位置参数变量、预定义变量
1.用户自定义变量
linux中默认的变量都是字符串型(注意:变量赋值时,“=”前后不能有空格)
[root@hadoop200 ~]# x=1 [root@hadoop200 ~]# y=2 [root@hadoop200 ~]# echo $x+$y 1+2 [root@hadoop200 ~]#
变量的叠加
[root@hadoop200 ~]# x=123 [root@hadoop200 ~]# echo "$x"456 123456 [root@hadoop200 ~]#
[root@hadoop200 ~]# x=123 [root@hadoop200 ~]# echo ${x}456 123456 [root@hadoop200 ~]#
2.环境变量
一般建议环境变量写成大写,避免与系统命令冲突
使用export将普通变量声明为环境变量,普通变量只能在当前bash中访问,环境变量可以在当前bash和其所有子bash中访问到。
[root@hadoop200 ~]# x=123 [root@hadoop200 ~]# export x [root@hadoop200 ~]# echo $x 123 [root@hadoop200 ~]# bash [root@hadoop200 ~]# echo $x 123 [root@hadoop200 ~]#
典型的环境变量如:PATH(系统默认读取命令位置)、PS1(命令提示符格式设置)等
3.位置参数变量
$n(n为数字)
$0代表命令本身,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含
$*
代表命令行中的所有参数,参数为一个整体
$@
代表命令行中的所有参数,参数区分对待
$#
命令行中的参数个数
[root@hadoop200 Desktop]# cat addnum #!/bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) echo $sum [root@hadoop200 Desktop]#
[root@hadoop200 Desktop]# ./addnum 10 20 30 [root@hadoop200 Desktop]#
4.预定义变量
$?
最后一次执行命令的返回状态。如果值为0则命令执行正确,否则不正确。
[root@hadoop200 Desktop]# ls addnum [root@hadoop200 Desktop]# echo $? 0 [root@hadoop200 Desktop]# lsa bash: lsa: command not found [root@hadoop200 Desktop]# echo $? 127 [root@hadoop200 Desktop]#
$$
当前进程号
[root@hadoop200 Desktop]# echo $$ 2354 [root@hadoop200 Desktop]# ps -ef | grep 2354 root 2354 2352 0 18:25 pts/0 00:00:00 /bin/bash root 2514 2354 1 18:42 pts/0 00:00:00 ps -ef root 2515 2354 0 18:42 pts/0 00:00:00 grep 2354 [root@hadoop200 Desktop]#
$!
后台运行的最后一个进程的进程号
5.查看系统环境变量和所有变量
所有变量
[root@hadoop200 ~]# env HOSTNAME=hadoop200 TERM=xterm SHELL=/bin/bash HADOOP_HOME=/usr/local/hadoop-2.5.2 HISTSIZE=1000 SSH_CLIENT=192.168.111.195 50272 22 SSH_TTY=/dev/pts/1 ...
所有系统环境变量
[root@hadoop200 ~]# set BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() ...