linux操作系统基础shell变量的应用(二)
,计算机系 罗海波 luo-hbneusoft.com,第15讲 shell变量的应用(二),上讲内容,1、了解shell的发展过程和用途 2、掌握shell变量的应用,复习1,1、如何获取变量?1分 2、如何设置变量,又如何取消变量?1分 3、变量名有由什么符号组成?123name这个变量存在吗?1分,#echo $变量名 或#echo $变量名 变量名=值,unset 变量名 数字和字母,数字不能打前。,复习2,4、假设定义#lhb=luohaibo 说出my=“$lhb is goodname!”和my=$lhb is goodname!区别 1分 双引号会保持变量内容,单引号不保持变量内容。,复习3,说出数字键1左边的符号的作用1分 内的命令将先执行, 例如通过uname -r的方式进入系统的核心 #cd /lib/modules/uname -r/kernel,本讲内容,掌握shell变量的应用(二): 1、一些环境变量的说明 2、其他所有的变量说明 3、自定义变量转成环境变量 4、语系文件的变量 5、变量键盘读取与声明 6、文件系统及程序的限制关系 7、附加的变量设置功能,环境变量的应用,环境变量可以帮助我们实现很多功能,包括家目录的修改、提示符的显示、执行文件搜索的路径,1、一些环境变量的说明,查看当前shell环境下所有环境变量及其内容。 #env,HOME:代表用户的家目录。 SHELL:当前环境使用的shell程序,/bin/bash表示使用的是bash。 HISTSIZE:记录的历史命令的数目,默认为1000条。,ENV:用户的所用的个性化环境设置文件。 MAIL:使用mail命令的时候,系统去读取的邮箱文件。 PATH:就是执行文件搜索的路径。,LANG:语系文件。(后面有详细介绍的课程) RANDOM:随机数变量。,2、其他所有的变量说明,set命令除了会将环境变量列出来之外,其他的自定义的变量,以及所有的变量,都会列出来。 #set,PS1(是数字1):用于命令提示符的设置。 请大家测试如下语句 #PS1=uh w A #$,$:表示本系统的PID也即当前这个shell的进程号。 ?:表示上一个执行命令的回传码,0表示成功,127表示错误。 OSTYPE、HOSTTYPW、MACHTYPE:主机硬件核心等级,3、自定义变量转成环境变量,export命令表示引用他人的文件或其他程序的功能,可以将自定义变量转换成环境变量。,4、语系文件的变量,查询linux支持的语系命令 #locale a 中文语系:Big5,utf-8 修改语系支持可修改文件/etc/sysconfig/i18n,5、变量键盘读取与声明,要读取来自键盘的命令,用read 格式如下: read -pt 变量 -p,表示可以接提示符 -t,等待输入的秒数,练习,让用户通过键盘输入内容,将该内容变成atest变量。 #read atest This is a test!(键盘输入的字符) #echo $atest,提示用户30秒内输入自己的名字,将该输入字符串做成named变量。 #read p “Please input your name: ” t 30 named 输入lhb #echo $named,声明变量的属性,declare或typeset的功能一样,就是在声明变量的属性。,declare -aixr 变量 -a,将变量定义为数组 -i,将变量定义为整数数字 -x,用法与export一样,将变量变成环境变量 -r,将变量设置为只读,且不能unset,练习,让变量sum对1+2+3求和 #sum=1+2+3(不加选项i) #echo $sum #declare i sum=1+2+3 #echo $sum,将sum变成环境变量 #declare x sum 让sum变成只读属性,不可更改 #declare r sum #sum=testingsum,6、文件系统及程序的限制关系,ulimit命令是用来限制用户的某些系统资源,包括可以打开的文件数量、可以使用的CPU时间、可以使用的内存总量等。,#ulimit -SHacdflmnpstuv 配额 -S,警告设置,超过的时候会给出提示。 -H,严格设置,必定不能超过设置的值。,-a,列出所有的限制额度。 -c,可建立的最大核心文件容量 -d,程序数据可以使用的最大容量 -f,此shell可以建立的最大文件容量,最大为2GB,单位为KB,-l,可用于锁定的内存量。 -p,可用于管道处理的数量。 -t,可使用的最大CPU时间(单位为秒)。 -u,单用户可以使用的最大进程数量。,练习,列出所有的限制数据 #ulimit -a 限制用户仅能建立1MB以下容量的文件 #ulimit f 1024,7、附加的变量设置功能,假定变量为lhb 内容为:/home/lhb/test/test.x #echo $lhb,,在lhb变量中,从最前面开始比较,若开头为/,则删除两个/之间的所有数据,即/*/。 #echo $lhb#/*/ #echo $lhb#/*/ 变量名lhb后面的#为取最长的,#表示取最小的。,接上面,重新给lhb赋值,如果是从后面删除/*。 #echo $lhb%/*/ #echo $lhb%/* #echo $lhb%/* %删除最长的范围,%删除最短的范围。,重新给lhb赋值,接上面 将lhb变量中的test替换为TEST #echo $lhb/test/TEST #echo $lhb/test/TEST 变量后面直接加单个/,表示替换一个,加两个/,表示替换全部,判断几个不同的变量内容,练习,Thank you! 谢谢!,