您的位置:首页 > 运维架构 > Shell

变量和运算符--shell编程笔记2

2011-02-19 13:59 381 查看
本地变量 环境变量 变量替换 位置变量 标准shell变量 特殊变量 影响变量的命令 引号 运算符 表达式替换 运算符的优先级
1、本地变量:本地变量在用户现在的shell生命期的脚本中使用
Variable-name=value
Set显示本地所有的变量
Readonly variable-name 把变量改为只读的
例如:#LOCALTEST=“test” //定义变量
#echo ${LOCALTEST} //大括号可以不要
test
#readonly LOCALTEST //变为只读的
# LOCALTEST=“test4” //然后给LOCALTEST变量再赋值,会提示以下信息
bash:LOCALTEST:readonly variable
#readonly //查看本地的所有只读变量,也可以加上-p参数查看
2、环境变量:环境变量用于所有用户进程(经常成为子进程);登录进程成为父进程。Shell中执行的用户进程均成为子进程。不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器、脚本和应用。
$HOME/.bash_profile(/etc/profile)
export //设置环境变量
env //查看环境变量,也可以直接用export来查看
例如:#export CHINA=”redhat” //定义环境变量CHINA
#env //查看上面定义的环境变量
#readonly CHINA //也可以设置为只读的
3、变量替换:用变量的值替换它的名字
echo
在变量名前加$,使用echo命令可以显示单个变量取值
例如:#testvar=”this is a test” //定义testvar变量
#echo ${testvar} //显示变量,大括号可以不要
This is a test
变量替换的方式:

${variable name}
显示实际值到variable name
${variable name:+value}
如果设置了variable name,则显示其值value,否则为空。
${variable name:?value}
如果未设置variable name,显示用户定义错误信息value
${variable name:-value}
如果未设置variable name,则显示其值value
${variable name:=value}
如果未设置variable name,设置其值,并显示
4、变量清楚
unset unset variable-name
例如:#testvar=”this is a test”
#echo ${testvar}
This is a test
#unset testvar //清楚变量
#echo ${testvar} //此时是不会显示任何信息的
#readonly testvar2 //把testvar2改为只读的
#unset testvar2 //此时是删除不了的,会返回错误信息
bash :unset:testvar2:cannot unset:readonly variable
5、位置变量:运行的程序后面要带一些参数,这些参数就是程序当中要用到的用位置标示的,这样的变量我们称为位置变量。在shell中允许的位置变量有十个:
$0,$1,$2………$9 //超过十个的话要用其它方式在程序中读出来,然后使用它,这些位置变量的表示为:假设$1的参数为A,$2的参数为B等等。

$0
$1
$2
$3
$4
$5
$6
$7
$8
$9
脚本名字
A
B
C
D
E
F
向脚本中使用位置参数
向系统命令传递参数
6、标准变量:bash默认建立了一些标准环境变量,可以在shell中自动解析,也可以在/etc/profile中定义。
EXINIT //初始化定义vi的一些设置参数
HOME //主目录 #echo $HOME
IFS //字段、域之间的分隔,如空格,冒号之类的
LOGNAME //登录名
MAIL //当前的用户的存储邮箱
MAILCHECK //检查是否有新的邮件
MAILPATH //多个邮箱的时候的路径
TERM //终端的类型vt100
PATH //可执行的文件的寻找路径
TZ //表示时区
PS1 //终端的提示符:[root@server root]#
PS 2 //要运行多行命令的时候的“>”符号
PWD // 表示当前的目录是什么
SHELL //当前运行的shell是哪一个shell,如/bin/bash
MANPATH //帮助文档存放的路径
TERMINFO //TERM表示的终端类型到底是哪个文件的信息
7、特殊变量
$# //传递到脚本的参数个数
$* //以一个字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超过9个
$$ //脚本运行的当前进程ID号
$! //后台运行的最后一个进程的进程ID号
$@ //使用时加引号,并在引号中返回每个参数的列表
$- //显示shell使用的当前选项,与set命令功能相同
$? //显示最后命令的退出状态,0表示没有错误,其他任何值都表明有错误
8、影响变量的命令
declare
--设置或显示变量
-- -f只显示函数名
-- -r 创建只读变量(delare和typeset)
-- -x创建转出变量
-- -i 创建整数变量
--使用+替代-,可以颠倒选项的含义
export
--用于创建传给子shell的变量
-- --表明选项结束,所有后续参数都是实参
-- -f表明在“名-值”对中的名字是函数名
-- -n把全局变量转换成局部变量。换句话说,命令的变量不再传给shell
-- -p显示全局变量列表
readonly
--用于显示或设置只读变量
-- --表明选项结束
-- -f创建只读变量
set 设置或重设各种shell
shift
用于移动位置变量,调整位置变量,使$3的值赋予$2,$2的值赋予$1。
typeset 用于显示或者设置变量,是declare的同义词
unset 用于取消变量的定义
n --表明选项结束
n -f删除只读变量,但不能从shell环境中删除指定的变量和函数。如PATH,PS1,PS2,PPID,UID,EUID等的设置。
9、引号:引号的必要性,双引号,单引号,反引号,反斜杠
引号的必要性:变量和替换操作,在脚本中执行变量替换时最容易犯得一个错误就是引用错误。
#echo ert *
#echo “ert *” //比较一下不同
10、运算符
运算符是对计算机发的指令
运算对象
--数字、字符(字面值)
--变量
--表达式
表达式:运算符和运算对象的组合体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: