shell基本应用(二)shell变量的使用

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

  2. 定义一个新的变量: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


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

相关文章
相关标签/搜索