shell程序设计
- 格式:doc
- 大小:81.00 KB
- 文档页数:27
实验四 shell编程实验(二)班级:姓名:学号:上机时间:年月日任课教师:实验教师:实验成绩:一、实验目的综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程。
二、实验注意事项实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。
要求每个同学登录后系统后,要在自己的家目录下创建一个属于自己的子目录(以自己(拼音)名字或学号)。
以后所有工作都要在自己的目录内进行。
建议以后的实验都在同台计算机上做,这样可以保持连续性。
三、实验内容1. 编写一个脚本,求斐波那契数列的前10项及总和。
num1=1num2=1echo -n “$num1+$num2”sum=2for((i=1;i<=8;i++))dotmp=$(expr $num1 + $num2)echo -n “+$tmp”((num1=num2))((num2=tmp))sum=$(expr $sum + $tmp)doneecho “=$sum”2.编写一个脚本,求一个数的逆序。
echo -n please input num:read numecho -n The num iswhile [ $num -gt 0 ]dosd=$(($num % 10))echo -n "$sd"num=$(($num/10))doneecho3.设计一个Shell程序,在用户主目录下建立一个userdata目录,在此目录下再建立5个目录,即user1~user5,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
(注意:最后删除自己所建立的目录,恢复原样,以便后面同学做此实验)mkdir -m 754 /home/userdatai=1temp=/home/userdata/userwhile[ $i -le 5 ]domkdir -m 754 $temp$ilet”i=i+1”#done4.用Shell编程,判断一文件是不是普通文件,如果是将其拷贝到/home/student/test 目录下,用命令查看test目录内容,最后再删除test目录。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。
Shell既是一种命令语言,又是一种程序设计语言。
作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。
因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。
可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。
一、什么是shell当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。
那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。
当用户使用Linux时是通过命令来完成所需工作的。
一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。
shell解释用户输入的命令,就象DOS里的所做的一样,所不同的是,在DOS中,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。
一般的Linux系统都将bash作为默认的shell。
二、几种流行的shell目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:#echo $SHELL$SHELL是一个环境变量,它记录用户所使用的shell类型。
你可以用命令:#shell-name来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。
Linux命令解释程序,通常称为shell,是一个在Linux操作系统中非常重要的组件。
它为用户提供了与操作系统交互的接口,允许用户输入命令并查看结果。
下面,我们将讨论shell 的设计与实现。
**1. Shell的架构**Linux shell基本上是一个命令行解析器,它接收用户输入的命令,解析这些命令,然后执行它们。
shell会按照输入的命令顺序逐个执行,直到遇到一个需要子进程的命令,例如管道(`|`)或后台运行(`&`)。
**2. Shell的类型**Linux有几种不同的shell,包括bash, sh, ksh, csh, zsh等。
每种shell都有其特性和优缺点,因此选择哪种shell通常取决于用户的个人或项目需求。
例如,bash具有丰富的特性,如编程接口,命令行编辑,和丰富的命令行实用工具。
**3. Shell的语法**Shell具有特定的语法规则,允许用户组合命令以创建更复杂的命令序列。
这些语法规则包括命令序列、管道、输入/输出重定向、后台运行等。
**4. Shell的变量和环境**Shell允许用户定义和使用变量。
这些变量可以存储各种数据类型,包括字符串、整数和数组。
此外,shell还维护了一个环境变量,这可以影响shell的行为和子进程的环境。
**5. Shell的流程控制**Shell提供了多种流程控制语句,如if-then-else语句、for循环、while循环、until循环等。
这些语句允许用户根据条件或循环来控制命令执行的流程。
**6. Shell的函数和命令**Shell允许用户定义和使用函数,这些函数可以执行一系列命令。
此外,shell还提供了一系列内置命令,如`cd`, `echo`, `date`等。
**7. Shell的实现**Shell的实现通常涉及C或C++等编程语言。
实现shell需要理解编程基础、文件和目录操作、进程控制、内存管理等知识。
实验四shell程序设计一、实验目的1.理解shell操作环境2.掌握shell程序编写方法二、实验内容1.练习、理解下面命令Alias设置指令的别名,执行命令后,列出目前所有的别名设置。
alias ld=’ls -ld .’为ls -ld .命令设置别名为ld。
history 20显示最近20个历史命令。
!!相当于再执行一遍上一条命令。
var1=”abcd1234”给变量var1赋值。
echo ${var1:3:4}从数组下标为3的值开始,显示4个值。
echo $HOME打印出当前用户环境的home目录路径/home/2011013305。
var2=$HOME给变量var2赋值,即将当前用户环境的home目录路径赋给var2。
echo ”我的主目录是$var2”显示“我的用户主目录是/home/2011013305”,没有该文件或目录。
set –o显示各命令的有效无效性,在后面加不同的参数,就能依照不同的需求进行设置。
ls *sh查找以sh结尾的文件或目录名,结果没有符合要求的文件。
arr1=(long live chair mao)给数组变量arr1赋值。
echo ${arr1[1]}显示下标为1的变量值,结果是live。
arr2=(`date`)给变量arr2赋值。
echo ${arr2[3]}显示下标为3的变量值,结果为空,执行不成功。
[ $? -eq 0 ] || echo ”上面命令执行失败。
”$? 是上个命令行执行是否成功,成功为0, -eq为”等于“的意思,执行结果为“上面的命令执行失败。
”{ date;pwd;tty;stty; }成组命令,按顺序执行{}大括号里的命令。
2.编写shell程序1)文件名webs.sh,在120.95.134.104主机建立个人主页空间;(提示:按照命令行操作命令和顺序编辑程序文件)#!/bin/bash# webs.shcd $HOMEmkdir public_htmlchmod o=rx .exit 02)文件名adds.sh,实现多个数值相加;(提示:多个数值通过参数提供) #!/bin/bash#adds.shs=0for i in $*do((s=s+i))doneecho $sexit 0执行结果:[2011013305@node1 ~]$ bash adds.sh[2011013305@node1 ~]$ bash adds.sh 1 2 36[2011013305@node1 ~]$ bash adds.sh 1 2 3 4 5153)文件名cleardirs.sh,删除指定目录下的文件和子目录;4)文件名clearfile.sh,删除指定目录下的文件及其子目录下的文件;(提示:使用find命令查找目录下文件)#!/bin/bash#clearfile.shx='find $1'for y in $xdo[ -d $y ] || {rm -f $y}doneexit 05)文件名feb.sh,显示费波纳奇数列 1 1 2 3 5 8 13 21 ...#!/bin/bash#feb.sha=1b=1echo -n $a $bfor((n=20;n>0;n--))doecho -n " $((a+b))"c=$((a+b))b=$aa=$cdoneexit 0Bash feb.sh运行文件,结果显示为:1 123 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 177113. 阅读理解程序120.95.134.104主机,/var/xg11x/adduser.sh#三、撰写实验报告报告中包括程序代码和注释。
《操作系统原理》实验报告
实验序号:5 实验项目名称:实现一个简单的Shell
一、实验目的及要求
1. 加深对操作系统Shell的理解。
2. 理解进程控制的思想。
3. 深入掌握Linux操作系统下的进程控制编程。
二、实验设备(环境)及要求
1.虚拟机VMware Workstation、Ubuntu操作系统和C语言编程。
2.设计思路:Shell建立一个新的进程,然后在那个进程中运行一个程序(如完成ls操作)然后等待那个进程执行结束。
然后shell便可读取新的一行输入,建立一个新的进程,在这个进程中运行程序并等待这个进程结束。
所以要写一个shell,需要循环以下过程:
a. 获取命令行
b. 解析命令行
c. 建立一个子进程(fork)
d. 替换子进程(execvp)
e. 父进程等待子进程退出(wait)。
三、实验内容与步骤
主要代码
解析并执行指令
输出各进程的信息
四、实验结果与数据处理
五、分析与讨论
六、教师评语
成绩
签名:
日期:。
shell程序课程设计一、课程目标知识目标:1. 理解Shell程序的基本概念,掌握Shell脚本的基础语法和结构;2. 学习常用Shell命令,能够运用这些命令进行文件操作、系统监控和进程管理等;3. 学会使用变量、循环和条件判断等控制结构,能够编写简单的Shell程序。
技能目标:1. 能够编写简单的Shell脚本,实现自动化执行任务;2. 能够运用Shell脚本进行文件处理和数据分析;3. 能够对Shell脚本进行调试和优化,提高脚本执行效率。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,提高他们主动学习的积极性;2. 培养学生的团队协作意识和问题解决能力,使他们能够更好地与他人合作共同完成任务;3. 增强学生的计算机操作能力和信息安全意识,让他们明白正确使用计算机技术的重要性。
分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在帮助学生掌握Shell编程的基础知识,培养他们编写脚本、解决问题的能力,同时注重培养学生对计算机技术的兴趣和正确使用计算机的态度。
通过本课程的学习,学生将能够独立完成简单的Shell程序设计,为今后的计算机编程学习打下坚实基础。
二、教学内容1. Shell概述- Shell的定义与作用- 常见Shell类型及特点2. Shell脚本基础- 脚本结构和执行方法- 变量定义与使用- 传递参数与特殊变量3. 常用Shell命令- 文件操作命令(如:ls、cp、mv等)- 文本处理命令(如:grep、sed、awk等)- 系统监控命令(如:ps、top、free等)4. 控制结构- 条件判断(if、case语句)- 循环控制(for、while语句)5. Shell函数与模块- 函数定义与调用- 模块化脚本编写6. 脚本调试与优化- 常见错误类型与解决方法- 性能优化技巧7. 实践案例- 文件整理与批量重命名- 系统监控与报警- 自动化部署与备份教学内容依据课程目标制定,涵盖Shell编程的基本概念、语法、常用命令、控制结构、函数与模块以及脚本调试与优化。
linux下shell 程序设计shell编程教学要点1.深入理解shell概念。
2.掌握linux下shell程序设计流程。
3.理解shell程序与C程序设计的区别。
4.掌握shell程序设计中用户变量和表达式的使用方法。
一.Shell编程概述问题1:请各位同学在home目录下创建5个目录,目录名称分别为student0,student1,student2,student3,student4.且修改它们的权限为所有用户都具有完全的操作权限。
问题2:请各位同学在home目录下创建100目录,目录名称为class1—class100.解决办法:通过一个shell脚本程序来实现,程序如下,用vi编辑器建立一个firstshell文件,内容如下:#!/bin/bash //指明该程序被那个shell来执行!cd /home/shelldir //进入home/shelldir目录mkdir newdir //在shelldir目录下新建newdir目录i=0 //给变量i赋初值while [ $i –lt 50 ]; do //循环,判断i是否小于50,成立继续循环let i=i+1 //让i变量值增加1mkdir /home/shelldir/newdir/student$i //在newdir目录下创建student1到student50chmod 754 /home/shelldir/newdir/student$idone保存文件,退出vi,通过执行#chmod a+x firstshell修改文件权限,赋予文件可执行权限,通过#./firstshell或者#/bin/bash firstshell来执行程序,查看程序运行结果。
程序说明:1.程序必须以下面的行开始(必须方在文件的第一行):#!/bin/bash符号#!用来告诉系统它后面的参数是用来执行该文件的程序。
在这个例子中我们使用/bin/bash来执行程序。
shell程序linux课程设计一、课程目标知识目标:1. 理解Shell的基本概念,掌握其在Linux系统中的作用和重要性。
2. 学会使用基本的Shell命令,如文件操作、目录切换、权限管理等。
3. 掌握Shell脚本编写的基础知识,包括变量定义、流程控制、函数等。
4. 能够运用所学知识解决实际问题,如编写简单的自动化脚本。
技能目标:1. 培养学生熟练使用Linux终端和Shell命令的能力。
2. 培养学生编写和调试简单Shell脚本的能力。
3. 培养学生运用Shell脚本实现自动化任务的能力。
情感态度价值观目标:1. 培养学生对Linux系统和Shell编程的兴趣,激发学习热情。
2. 培养学生面对问题时的独立思考、解决问题的能力。
3. 培养学生的团队协作意识,学会与他人分享和交流学习经验。
课程性质:本课程为Linux shell程序设计,旨在让学生掌握Shell编程的基本知识,提高其在Linux系统下的操作能力和解决问题的能力。
学生特点:学生具备一定的计算机基础知识,对Linux系统有一定了解,但Shell编程经验较少。
教学要求:结合学生特点,课程设计应注重实践,以实例为主线,引导学生动手实践,提高其编程能力和实际操作能力。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. Shell概述- Shell的定义与作用- 常见的Shell类型及特点2. 基本Shell命令- 文件和目录操作命令:ls、cd、pwd、mkdir、rm、cp、mv - 权限管理命令:chmod、chown- 文本处理命令:cat、grep、sort、uniq、cut、awk3. Shell脚本编写基础- 变量定义与使用- 流程控制语句:if、for、while- 函数的定义与调用4. Shell脚本实例分析- 简单自动化脚本编写- 系统监控脚本编写- 文件处理脚本编写5. Shell脚本调试与优化- 常见错误类型及解决方法- 调试技巧与优化策略教学内容安排与进度:1. 第1周:Shell概述及基本概念2. 第2周:基本Shell命令学习3. 第3周:Shell脚本编写基础4. 第4周:Shell脚本实例分析5. 第5周:Shell脚本调试与优化教材章节关联:1. Shell概述:《Linux操作系统》第3章2. 基本Shell命令:《Linux操作系统》第4章3. Shell脚本编写基础:《Linux Shell编程》第2章4. Shell脚本实例分析:《Linux Shell编程》第3章5. Shell脚本调试与优化:《Linux Shell编程》第4章三、教学方法本课程将采用以下教学方法,以促进学生主动学习,提高教学效果:1. 讲授法:教师通过讲解Shell编程的基本概念、语法和技巧,为学生提供必要的理论知识。
实验五Linux的shell编程一、实验目的1.了解常用shell的编程特点,掌握shell程序设计的基础知识。
2.认识和理解shell程序流程控制、shell程序的运行方式、shell程序的调试方法。
3.基本掌握编写shell程序的步骤、方法和技巧。
二、实验环境Linux软件和计算机三、实验内容或步骤实验准备知识为书上5.3,5.4,5.5以及第23章内容,p73~84,p374-394。
1、shell脚本的建立同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。
由三条简单命令组成的Shell程序,文件名为prog。
ls –lcalwho2、shell脚本的执行(通常用三种方式)1)、输入定向的执行方式sh < 脚本名如:sh < prog2)、以脚本名作为Shell参数的执行方式sh 脚本名[参数] 如:sh prog3)、改执行权限后直接执行方式如:# chmod a+x prog# ./prog3、Shell变量:1)、可写的环境变量$ echo $PS1$ PS1=“[\u@@@wdg-Linux-9]”2)、位置参数:在命令行传递给shell脚本的参数。
(1)位置参数及引用可以编写一个shell脚本,当从命令行或者从其他shell脚本中调用它的时候,这个脚本接收若干参数。
这些选项是通过Linux作为位置参数(positional parameter)提供给shell程序的。
在shell脚本中应有变量,接收实参,这类变量的名称很特别,分别是1,2,3,…,这类变量称为位置变量。
位置参数1存放在位置变量1中,位置参数2存放位置变量2中,……,在程序中可以使用$1,$2,……来访问。
下述是一个shell程序的mypgm1,只带了一个参数(名字),并在屏幕上显示这个名字:#Name display program1if [ $# -eq 0 ]thenecho“Name not provided”elseecho”Your name is $1”fi在pdksh和bash中,如果执行mypgm1如下:#.mypgm1将得到输出:Name not provided但是,如果执行mypgm1如下:#.mypgm1sanjia则得到如下的输出:Your name is sanjia(2)用set命令为位置参数赋值在shell程序中可以利用set命令为位置参数赋值或重新赋值。
Linux之19——Shell编程基础详解第⼀部分:Linux Shell 简介Shell 是⼀个⽤ C 语⾔编写的程序,它是⽤户使⽤ Linux 的桥梁。
Shell 既是⼀种命令语⾔,⼜是⼀种程序设计语⾔。
Shell 是指⼀种应⽤程序,这个应⽤程序提供了⼀个界⾯,⽤户通过这个界⾯访问操作系统内核的服务。
Ken Thompson 的 sh 是第⼀种 Unix Shell,Windows Explorer 是⼀个典型的图形界⾯ Shell。
当⼀个⽤户登陆linux 系统后,系统就会为该⽤户创建⼀个shell程序。
Shell的版本:Bourne Shell:是贝尔实验室开发的,unix普遍使⽤的shell,在编程⽅⾯⽐较优秀,但在⽤户交互⽅⾯没有其他shell优秀。
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,在bourne shell基础上增强了很多特性,如命令补全,命令历史表等等Korn Shell:是对Bourne Shell 的发展,在⼤部分内容上与Bourne Shell兼容,集成了C Shell和Bourne shell优点。
C Shell:是SUN公司Shell的BSD版本,语法与c语⾔相似,⽐bourne shell 更适合编程第⼆部分 shell 程序设计基础2.1 shell输⼊输出2.1.1 echoecho命令可以显⽰⽂本⾏或变量取值,或者把字符串输⼊到⽂件中格式: echo stringecho的常⽤功能:\c 不换⾏ \f 不进纸 \t 跳格 \n 换⾏note:对于linux系统,必须使⽤-e选项来使以上转义符⽣效例:$ echo -e "hello\tboy"hello boyecho命令对特殊字符敏感,如果要输出特殊字符,需要⽤\屏蔽其特殊含义。
常⽤的特殊字符:双引号"" 反引号`` 反斜线\例:$ echo "\"\"" //想输出""""2.1.2 readread命令从键盘或者⽂件的某⼀⾏⽂本中读⼊信息,并将其赋给⼀个变量。
shell编程教学要点1.深入理解shell概念。
2.掌握linux下shell程序设计流程。
3.理解shell程序与C程序设计的区别。
4.掌握shell程序设计中用户变量和表达式的使用方法。
一.Shell编程概述问题1:请各位同学在home目录下创建5个目录,目录名称分别为student0,student1,student2,student3,student4.且修改它们的权限为所有用户都具有完全的操作权限。
问题2:请各位同学在home目录下创建100目录,目录名称为class1—class100.解决办法:通过一个shell脚本程序来实现,程序如下,用vi编辑器建立一个firstshell文件,内容如下:#!/bin/bash //指明该程序被那个shell来执行!cd /home/shelldir //进入home/shelldir目录mkdir newdir //在shelldir目录下新建newdir目录i=0 //给变量i赋初值while [ $i –lt 50 ]; do //循环,判断i是否小于50,成立继续循环let i=i+1 //让i变量值增加1mkdir /home/shelldir/newdir/student$i //在newdir目录下创建student1到student50chmod 754 /home/shelldir/newdir/student$idone保存文件,退出vi,通过执行#chmod a+x firstshell修改文件权限,赋予文件可执行权限,通过#./firstshell或者#/bin/bash firstshell来执行程序,查看程序运行结果。
程序说明:1.程序必须以下面的行开始(必须方在文件的第一行):#!/bin/bash符号#!用来告诉系统它后面的参数是用来执行该文件的程序。
在这个例子中我们使用/bin/bash来执行程序。
2.当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行,必须为脚本添加可执行权限。
#chmod a+x filename3.输入:# ./filename 来执行脚本程序。
如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。
Linux中有好多中不同的shell,通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。
这些脚本同样可以在其他bash中使用。
注:1.可以通过#echo $SHELL查看当前系统所运行的shell类型;2.可以通过#cat /etc/shells查看系统上所有的shell。
3.可以直接通过输入shell名来运行新的shell。
比如#ash,启动ash。
二.为什么要进行shell编程在Linux系统中,虽然有各种各样的图形化接口工具,但是shell 仍然是一个非常灵活的工具。
Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。
可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。
三.shell程序组成Shell程序有注释,shell命令,变量,表达式,流程控制等组成。
1.shell程序注释在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。
初学者要养成在程序中使用注释的习惯。
如果使用了注释,那么即使相当长的时间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作原理。
这种习惯对一个优秀的技术人员来说非常重要2.命令a.linux下常用的各类命令,比如ls,cd,mkdir,pwd,rm,rmdir 等等。
b.shell中的算术运算。
如 let i=i+13.变量在其他编程语言中可以使用变量。
在shell编程中,也有各种变量,特别是在C语言中,变量使用之前一定要先定义,然后再使用;shell程序中也可以使用各种变量,shell编程中所有的变量都由字符串组成,并且shell程序中的变量不需要提前进行声明定义,可以直接使用。
如程序中所示:i=0 //变量名=值取出变量值可以加一个美元符号($)在变量前面:$iShell脚本中除了用户自己定义的变量仅在程序内有效,还有系统定义的变量,比如环境变量。
由export关键字处理过的变量叫做环境变量。
我们不对环境变量进行讨论,环境变量至关重要,在后面章节中会详细介绍。
4..shell脚本程序中的表达式表达式是shell脚本中必不可少,如实例程序中的数学表达式let i=i+1shell程序中的数学表达式需要一些程序来完成,如let,expr等。
Shell中还有其他的表达式比如关系表达式等如两数比较的$i –lt 505.shell中的流程控制语句课堂训练1:请大家自己编写一个shell脚本程序,来清除在前面实例中新建的所有student目录。
复习总结:1.shell程序功能。
2.shell程序设计执行方法。
问题:如何修改配置,使得系统部出现乱码?四.Shell程序中的变量在Shell中有三种变量:系统变量,环境变量,用户变量。
其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置。
如实例1中的i变量为用户变量。
1. Shell用户变量用户变量是最常用到的变量,使用也十分简单。
用户定义的变量必须由字母数字及下划线组成,并且变量名的第一个字符不能为数字, 与其它UNIX名字一样,变量名是大小写敏感的.对于用户变量,用户变量使用时不需要提前定义,可以直接赋值使用,在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值。
例如程序实例1中的i=0。
需要注意一点:变量和'='之间不要有空格,'='和赋值也不要有空格,否则shell不会认为变量被定义。
对于未赋值的变量, Shell以空值对待。
2. shell 环境变量Linux是一个多用户的操作系统。
每个用户登录系统后,都会有一个专用的运行环境。
通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。
用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
用set命令可以查看当前环境下所有的环境变量的值。
常见环境变量的含义如下:PATH 命令搜索路径,以冒号为分隔符HOME 用户home目录的路径名COLUMNS 定义了命令编辑模式下可使用命令行的长度HISTFILE 命令历史文件HISTSIZE 命令历史文件中最多可包含的命令条HISTFILESIZE 命令历史文件中包含的最大行数SHELL SHELL的路径名TERM 终端类型PS1 主命令提示符LD_LIBRARY_PATH 寻找库的路径,以冒号分隔a.环境变量的临时查看和修改方法通过#set查看所有环境变量,通过#echo $PATH可以查看某个环境变量的值,通过#export LC_ALL=POSIX来修改环境变量的值。
实例:#export PS1=[tjqding@]#//将shell操作提示符修改为[tjqding@]##export PATH=$PATH:/home/shellscrip//将/home/shellscrip目录添加到搜索路径环境变量中去,这样可以在任何地方都不需要输入/home/shellscrip目录名,直接给出可执行文件名,就可以执行程序。
通过export修改环境变量,只是暂时有效,当系统重启或关闭终端,那么修改就会失去效用,如果想永久修改有效,必须修改环境变量文件。
b.环境变量的永久修改方法通过修改环境变量文件来实现,环境变量文件一般在用户目录下,通过#ls –a可以显示,通过vi编辑器修改,保存。
如解决linux 下乱码的问题,实际上就是在修改环境变量。
3.系统变量Shell常用的系统变量并不多,但却十分有用,特别是在做一些参数检测的时候。
下面是Shell常用的系统变量表示方法$1…$n $1 表示第一个参数,$2 表示第二个参数 ...$# 命令行参数的个数$0 当前程序的名称$? 前一个命令或函数的返回码$* 以"参数1 参数2 ... " 形式保存所有参数$@ 以"参数1" "参数2" ... 形式保存所有参数$$ 本程序的(进程ID号)PID$! 上一个命令的PID程序实例#!/bin/bash#This file is used to explain the shell system variable. echo "the number of parameter is $# "echo "the script name is $0 "echo "the parameters are $* "echo "the parameters are $@ "echo “the return code of last command is $?”echo “the script shelleverment PID is $$”echo $1echo $2echo $3echo $4echo "the return code of last command is $?"总结:本节课的重点是环境变量的理解,环境变量是嵌入式系统开发中的重要概念,在嵌入式Linux 系统开发移植过程中,都要依赖环境变量。
本节课主要任务如下:1.掌握Linux系统中常见环境变量的功能以及修改方法。
2.掌握shell程序设计中系统变量的含义。
2.熟悉shell程序设计中算术运算实现的方法。
四.Shell程序中算术运算实现Shell程序中同样可以进行多种算术运算,加减乘除,取余等,Shell程序中完成算数运算有多种方法。
常见的有三种方法,使用let 命令,expr工具,以及使用$符号。
1.使用let进行算术运算let可以进行算术运算,主要有如下:+ 两个整数相加- 第一个数减去第二个数* 两整数相乘/ 第一个整数除以第二个整数% 两整数相除,取余数问题1:i=9,b=i+1,c=i+b d=c*5,编写s he ll程序计算i,b,c,d的值,并且显示。
a.第一种方法,直接在命令下依次输入如下命令:#let i=9#let b=i+1 c=i+b#let d=c*5#echo $i $b $c $d#echo $i $b $c $d缺点:因为变量都保存在缓存中,重启系统或者终端,就会丢失。