您的位置:首页 > 运维架构 > Shell

shell脚本-变量

2015-12-01 10:57 465 查看
在shell脚本中变量主要分为

用户自定义变量

环境变量

位置参数变量

预定义变量

注意

默认变量类型为字符串类型

赋值操作等号两边不应该有空格

用户自定义变量

Linux中最常用的变量,用户可自由定义,只在当前的shell生效。

变量定义与调用

$ var=”aa” #为变量var赋值”aa”

$ echo $var #切记变量名前加$

aa

变量调用还有多种写法

$ echo “$var” #可以用双引号将变量括起来

aa

$ echo “$var”test

aatest

$ echo ${var} #可以用大括号讲变量名括起来

aa

$ echo ‘$var’ #如果用单引号括起来,则只会原样输出

$var

删除自定义变量

unset var #unset 变量名,注意:变量名前不需要$

环境变量

主要保存和系统操作环境相关的数据,在当前的shell以及其子shell中生效。

启动一个子shell

$ bash #使用bash来创建一个子shell

$ exit #退出子shell

环境变量定义与调用

$ export var=”aa” #采用expert 变量名=变量值 方式

或者

$ var=”aa”

$ export var #采用expert 变量名 方式

子shell中能够使用父shell环境变量

$ expert var=”aa”

$ bash #在当前shell创建一个子shell

$ echo $var

aa

删除环境变量

$ unset var

#删除环境变量,注意:在子shell中删除环境变量后父shell环境变量不受影响

常用环境变量

PATH

系统查找命令路径

$ PATH=”$PATH”:/bin/java #为PATH添加一个/etc/java路径

PS1

定义系统提示符

其特殊符号所代表的含义:

\d :代表日期,格式为weekday month date

\H :完整的主机名

\h :简写主机名

\t :显示时间为24小时格式,格式为:”HH:MM:SS”

\A :显示时间为24小时格式:HH:MM

\u :当前用户的账号名称

\v :BASH的版本信息

\w :完整的工作目录名称。

\W :显示当前目录最后一个目录

\# :执行的第几个命令

$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

位置参数变量

主要像脚本中传递参数或数据,变量名不能自定义,变量作用固定。1

$0 代表命令本身

1,1,2,3....,3....,9第一个参数,第二个参数,第三个参数,第九个参数, 十以上的参数用${10}表示 

$*代表命令中所有的参数,把所有的参数看成一个整体

$@也代表命令中所有的参数,把每个参数区分对待

$#代表命令中所有参数的个数

#positionPar.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $*
echo $@
echo $#


执行结果:

$ chmod +x positionPar.sh

$ ./positionPar.sh p1 p2 p3

./positionPar.sh

p1

p2

p1 p2 p3

p1 p2 p3

3

执行结果显示$@与$*是相同的,接下来再写一个脚本来验证这来这两个的区别

#checkDiff.sh
#区分$@与$*
#!/bin/bash
x=0
for i in "$*"
do
x=$(($x+1))
echo "number is $x,value is $i"
done
y=0
for j in "$@"
do
y=$(($y+1))
echo "number is $y,value is $j"
done


执行结果:

$ chmod +x checkDiff.sh

$ ./checkDiff.sh 1 2 3

number is 1,value is 1 2 3

number is 1,value is 1

number is 2,value is 2

number is 3,value is 3

预定义变量

是bash中已经定义好的变量,变量名不能定义,变量作用也固定。

$? 最后一次执行的命令返回状态。如果这个变量为0,证明上一个命令正确执行;如果这个变量非0,则证明上一个命令不正确

$$当前进程的进程号(PID) 

$!后台运行的最后一个进程的进程号(PID) 

$?

$ echo ‘a’ #执行一个正确的命令

a

$ echo $?

0

$ dfdf #执行一个错误的命令(找不到该命令)

$ echo $?

127

$!

可以在执行命令最后加&来代表后台执行

http://www.linuxidc.com/Linux/2013-10/91679.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: