jackgaolei

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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=()
...

  

posted on 2016-01-15 10:34  jackgaolei  阅读(285)  评论(0编辑  收藏  举报