自定义变量:有系统用户自己定义的变量,只有用户自己的shell环境中才有效,也称为本地变量,在shell脚本编程时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需求。
定义一个新的变量:
定义变量的格式"变量名=变量值"切记等号两边没有空格,变量名称需要首字母或者下划线开头,名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定义一个名为 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
今天写到这,明天写数值变量的运算。谢谢