Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1705766
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: LINUX

2008-12-12 23:30:12

SHELL中经常会使用到变量.通常大写字符为系统预设变量,而用户自定义变量可以使用小写字符,以便加以区分.

1. 等号左右不能有空格

[root@localhost ~]# var1 = 10
bash: var1: command not found
[root@localhost ~]# var1= 10
bash: 10: command not found
[root@localhost ~]# var1=10
[root@localhost ~]# echo $var1
10

2. 变量名称只能是字母与数字,且不能以数字开头

[root@localhost ~]# .var1=10
bash: .var1=10: command not found
[root@localhost ~]# 1var1=10
bash: 1var1=10: command not found 

3. 若变量值存在空格,则必需以双引号或单引号包裹起来.

[root@localhost ~]# var1=10 ms
bash: ms: command not found
[root@localhost ~]# var1='10 ms'
[root@localhost ~]# echo var1
var1
[root@localhost ~]# var1="10 ms"
[root@localhost ~]# echo var1
var1 

4. 对于特殊字符,单引号不能识别,而双引号可以识别

[root@localhost ~]# var1='c:\\'
[root@localhost ~]# echo $var1
c:\\
[root@localhost ~]# var1="c:\\"
[root@localhost ~]# echo $var1
c:\ 

5. "\"既可以作为跳转字符,也可以作为转义字符

[root@localhost ~]# var1=\
> yuechaotian
[root@localhost ~]# echo $var1
yuechaotian
[root@localhost ~]# var1=\\
[root@localhost ~]# echo $var1
\
[root@localhost ~]# var1=\'
[root@localhost ~]# echo $var1
'
[root@localhost ~]# var1=\"
[root@localhost ~]# echo $var1
"
[root@localhost ~]# var1=It\'s\ mine
[root@localhost ~]# echo $var1
It's mine
[root@localhost ~]# var1=$HOME
[root@localhost ~]# echo $var1
/root
[root@localhost ~]# var1=\$HOME
[root@localhost ~]# echo $var1
$HOME

6. 若变量要括增内容,应该使用双引号及$引用该变量

[root@localhost ~]# var1="$var1"yuechaotian
[root@localhost ~]# echo $var1
$HOMEyuechaotian 

在RedHat中,如果不使用双引号,如果有区分字符,也使可以的.不过为避免歧义,还是推荐使用双引号.

[root@localhost ~]# var1=$var1:neu
[root@localhost ~]# echo $var1
$HOMEyuechaotian:neu
[root@localhost ~]# var1=$var1*male
[root@localhost ~]# echo $var1
$HOMEyuechaotian:neu*male
[root@localhost ~]# var1=$var1/linux
[root@localhost ~]# echo $var1
$HOMEyuechaotian:neu*male/linux
[root@localhost ~]# var1=$var1-oracle
[root@localhost ~]# echo $var1
$HOMEyuechaotian:neu*male/linux-oracle

7. 若该变量需要在该程序的子程序中运行,需要使用export

# 7.1 在新开启的子程序中,找不到变量var1
[root@localhost ~]# var1="How are you?"
[root@localhost ~]# echo $var1
How are you?
[root@localhost ~]# /bin/bash
[root@localhost ~]# echo $var1

[root@localhost ~]# exit
exit
[root@localhost ~]# echo $var1
How are you?
# 7.2 将变量export后,子程序中即可使用
[root@localhost ~]# export var1
[root@localhost ~]# /bin/bash
[root@localhost ~]# echo $var1
How are you?

8. 在一串指令中如果需要借助其他指令,可以使用`command`来嵌套(注意这里不是单引号,而是quote符号,也就是你的键盘上F1下面的那个按钮)

[root@localhost ~]# uname -r
2.6.9-42.EL
[root@localhost ~]# var1="My Kernel is "`uname -r`
[root@localhost ~]# echo $var1
My Kernel is 2.6.9-42.EL

9. 取消变量使用unset

[root@localhost ~]# unset var1
[root@localhost ~]# echo $var1

[root@localhost ~]#
阅读(2531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~