自定义变量:有系统用户本身定义的变量,只有用户本身的shell环境中才有效,也称为本地变量,在shell脚本编程时,一般会设置一些特定的自定义变量,以适应程序执行过程当中的各类变化,知足不一样的需求。web
定义一个新的变量:shell
定义变量的格式"变量名=变量值"切记等号两边没有空格,变量名称须要首字母或者下划线开头,名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定义一个名为 test的变量(值为managerweb)和一个名为installer(值为publishweb);能够执行如下操做;编程
[root@dbserver ~]# test=manageweb
bash
[root@dbserver ~]# installer=publishwebide
3.查看和引用变量:
命令行
[root@dbserver ~]# echo $test $installer
server
manageweb publishweb进程
当变量名容易和紧跟后边的其余字符混淆时,须要添加大括号“{}”将其括起来,不然将肯定不了正确的变量名称,对于未定义的变量,将显示其为空值。ci
[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
今天写到这,明天写数值变量的运算。谢谢