Shell变量
Shell变量和其他语言的变量含义大同小异,就是可以存放不同的内容,它也为灵活管理Linux系统提供特定参数。一般有两层意思:变量名:使用固定的名称,由系统预设或用户定义;变量值:能够根据用户设置、系统环境变化而变化。
Shell变量的种类:
用户自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改
预定义变量:Bash预定义的特殊变量,不能直接修改
位置变量:通过命令行给程序传递执行参数,如ls -l /etc/httpd,其中后面两个参数可视为位置参数。
变量的赋值与引用:
定义新的变量名要以英文字母或下划线开头,区分大小写,格式为:变量名=变量值
查看变量的值:echo $变量名
[root@localhost ~]# DAY=Sunday [root@localhost ~]# echo $DAY ==>通过$符号引用指定名称的变量值 Sunday [root@localhost ~]#
(注意:在查看变量时,如果变量名容易和后边的字符串连在一起导致混淆,则应该使用大括号将变量名括起来,使用形式为:${变量名} ,例如: 若已知变量Var的值为Benet,则执行“echo $Var3.0”命令后将显示结果“.0”而不是“Benet3.0”,因为在该命令中,会将“Var3”当成变量名(默认未定义此变量)。若希望正确显示“Benet3.0”的输出结果,则需要执行“echo ${Var}3.0”)
[root@localhost ~]# Var =Benet [root@localhost ~]# echo $Var Benet [root@localhost ~]# echo $Var3.0 .0 [root@localhost ~]# echo ${Var}3.0 Benet3.0 [root@localhost ~]#
从键盘输入内容为变量赋值,格式为:read [-p "输入信息"] 变量名
[root@localhost ~]#read var haha ==>这里等待输入 [root@localhost ~]#echo $var haha [root@localhost ~]#
在给变量赋值时,使用不同的引号操作的区别:
1)使用双引号时,允许在双引号的范围内使用“$”符号引用其他变量的值(变量引用)
2)使用单引号时,将不允许在单引号的范围内引用其他变量的值,“$”符号或者其他任何符号将作为普通字符看待
[root@localhost ~]#name=linuxidc [root@localhost ~]#echo $name linuxidc [root@localhost ~]#myname="$name is me" ==>这里使用的是双引号 [root@localhost ~]#echo $myname linuxidc is me ==>将$name这个变量执行出来了 [root@localhost ~]#myname='$name is me' ==>这里使用的是单引号 [root@localhost ~]#echo $myname $name is me ==>原样显示出来了,$name没有执行 [root@localhost ~]#
3)使用反撇号时,允许将执行特定命令的输出结果赋值给变量(命令替换),反撇号中的内容要求是可执行的命令。需要嵌套使用时,可以将反撇号改为 $( ... ) 的形式
这么说吧,在一串命令中,在`之内的命令会被先执行,然后将其执行出来的结果作为外部的输入信息。
[linuxidc@localhost ~]$ locate crontab /etc/anacrontab /etc/crontab /usr/bin/crontab /usr/share/man/man1/crontab.1.gz ..... [linuxidc@localhost ~]$ ls -l `locate crontab` ==>先执行locate crontab,再执行ls -l -rw-r--r-- 1 root root 298 2006-12-18 /etc/anacrontab -rw-r--r-- 1 root root 255 2006-07-15 /etc/crontab -rwsr-sr-x 1 root root 315416 2008-07-15 /usr/bin/crontab -rw-r--r-- 1 root root 1846 2008-07-15 /usr/share/man/man1/crontab.1.gz ..... [linuxidc@localhost ~]$
设置变量的作用范围,格式:export 变量名
一般情况下,父进程的自定义变量是无法在子进程中使用的,但是通过export将变量变成环境变量后,就能够在子进程下使用了。
[root@localhost ~]#name=linuxidc [root@localhost ~]#echo $name linuxidc [root@localhost ~]# export name ==>输出为全局变量 [root@localhost ~]# zsh [root@localhost]~# echo $name linuxidc [root@localhost]~# exit [root@localhost root]# unset name==>消除变量内容 [root@localhost root]# echo $name [root@localhost ~]#
变量还有一个好处,当您经常访问一个目录时,而且这个目录比较长,可以将它付给一个简单的变量,这样进入这个目录时候只需cd 变量就行了。如work="~/temp/2013/test/",则进入这个目录只需cd work。
数值变量的运算:
之前讲到过可以使用命令bc来打开一个计算器,其实Bash程序并不适合进行强大的数学运算,例如小数或指数运算的,一般只能进行简单的整数运算,若不使用bc,则也可以使用下列格式来进行简单数值计算:
格式:expr 变量1 运算符 变量2 [..运算符 变量n...]
expr命令常用的运算符有:+、-、\*(注意要有\)、/、%
[linuxidc@localhost ~]$ expr 10 * 2 expr :语法错误 [linuxidc@localhost ~]$ expr 10 \* 2 20 [linuxidc@localhost ~]$expr 10 + 2 12 [linuxidc@localhost ~]$
环境变量
环境变量配置文件:全局配置文件:/etec/profile
用户配置文件:~/.bash_profile
查看环境变量:env
set (set命令可以查看所有的Shell变量,其中包括环境变量)
常见的环境变量:
$USER、$LOGNAME变量表示当前用户的登录名称
$UID变量表示当前用户的UID号
$SHELL变量表示用户使用的登录Shell
$HOME变量表示用户的宿主目录
$PWD变量表示用户当前的工作目录
$PS1和$PS2变量分别代表了当前用户的主提示符(命令行提示符)和辅助提示符(例如,执行at命令后的“>”)
RHCE7认证学习笔记:网络端口安全
[红帽认证辅导]2016年2月19日Linux笔试面试常见题目
[红帽认证试题]2016年2月14日RHCE学习笔记:如何设置和测试静态网络路由
[红帽认证辅导]2016年1月19日红旗Linux用户基础教程其他实用命令汇总
[红旗认证辅导]2015年5月11日红帽RHCE认证133网络管理汇总
[红帽认证辅导]2015年5月11日