1. 自定义变量:有系统用户自己定义的变量,只有用户自己的shell环境中才有效,也称为本地变量,在shell脚本编程时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需求。

  2. 定义一个新的变量:

定义变量的格式"变量名=变量值"切记等号两边没有空格,变量名称需要首字母或者下划线开头,名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定义一个名为 test的变量(值为managerweb)和一个名为installer(值为publishweb);可以执行以下操作;


[root@dbserver ~]# test=manageweb

[root@dbserver ~]# installer=publishweb


3.查看和引用变量:


[root@dbserver ~]# echo $test $installer

manageweb publishweb


当变量名容易和紧跟后边的其他字符混淆时,需要添加大括号“{}”将其括起来,否则将确定不了正确的变量名称,对于未定义的变量,将显示其为空值。


[root@dbserver ~]# echo $test4.5

.5

[root@dbserver ~]# echo ${test}4.5

manageweb4.5


4.变量赋值的特殊操作

1)双引号(")

双引号主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须要用双引号括起来,其他情况下双引号通常可以省略,例:若将“manageweb 6.9”赋值给变量test,应执行“test=manageweb 6.9”


[root@dbserver ~]# test=manageweb 6.9

-bash: 6.9: command not found

[root@dbserver ~]# test="manageweb 6.9"

[root@dbserver ~]# echo $test 

manageweb 6.9


在双引号范围内,使用$符号可以应用其他变量的值,例:


[root@dbserver ~]# TYPE="ACCP $installer"

[root@dbserver ~]# echo $TYPE 

ACCP publishweb


2)单引号(')

当要赋值的内容包含“$、"、\”等具有特殊含义的字符时,因使用单引号括起来,在单引号的范围内,将无法引用其他变量的值,任何字符均作为普通字符看待但赋值内容中包括含单引号时,需使用"\`"符号进行转义,以免冲突。


[root@dbserver ~]# kill='ACCP $installer'     //$符号不能应用变量

[root@dbserver ~]# echo $kill                 //原样输出字符串

ACCP $installer


3)反撇号(`)

反撇号主要用于命令替换,允许将执行的某个命令的屏幕输出结果赋值给变量,反撇号括起来的范围必须是能够执行的命令行,否则会出错,例:


[root@dbserver ~]# ls -lh `which useradd`

-rwxr-x---. 1 root root 101K Aug  2  2011 /usr/sbin/useradd


4)read命令

read命令用来提示用户输入信息,从而实现简单的交互过程,执行时将从标准输入设备(键盘)读入一行内容,并以空格为分隔符,将读入的各字段挨个赋值给指定的变量,若指定的变量只有一个,则将整行内容赋值给此变量。例:执行以下操作将会等待用户输入文字,并将输入的内容赋值给变量ToDor1


[root@dbserver ~]# read ToDir1

/opt/backup

[root@dbserver ~]# echo $ToDir1 

/opt/backup


为了使交互式操作的界面更加友好,提高易用性,read命令可以结合“-p”选项来设置提示信息。


[root@dbserver ~]# read -p "Please specify the backup path:" ToDir2

Please specify the backup path:/opt/backup

[root@dbserver ~]# echo $ToDir2

/opt/backup


5.设置变量的作用范围:

默认情况下新定义的变量只在当前shell环境中有效,因此称为局部变量。当进入到子进程或者新的子shell环境时,局部变量将无法再使用了。


[root@dbserver ~]# echo $test $installer

manageweb 6.9 publishweb

[root@dbserver ~]# bash

[root@dbserver ~]# echo $test $installer


[root@dbserver ~]# 


为了使用户定义的变量在所有的shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将指定变量导出为“全局变量”。例:


[root@dbserver ~]# echo $test $installer 

manageweb publishweb

[root@dbserver ~]# export test installer

[root@dbserver ~]# bash 

[root@dbserver ~]# echo "$test $installer"

manageweb publishweb


今天写到这,明天写数值变量的运算。谢谢