函数
别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可以调用别的脚本,但是速度会比较慢。所以函数是必不可少并且非常重要的一个东西。
<ccid_nobr> </ccid_nobr>
<ccid_code>定义函数的格式 function_name(){...} 例子: //~ fun_s show(){ echo "show $*" } echo $* echo "after function" show c d echo $* exit 0 ///////////////////////////// $./fun_s a b 结果是 a b after function c d a b</ccid_code>
|
从上面的例子可以看出,当脚本调用函数的时候,脚本程序的位置参数会被替换成函数的位置参数,并且函数调用结束后还原。
<ccid_nobr> </ccid_nobr>
<ccid_code>return:
//~ return_s #!/bin/bash first(){ echo "is return" } second(){ echo "before return" return "0" echo "after return" } return_value="$(first)" echo $return_value second&&echo "return 0"||echo "return other" exit 0 //////////////////////////////////////
输出 is return before return return 0</ccid_code>
|
该例子说明可以捕获函数内echo的字符串,如echo $(first) , 函数在return后不会再执行下面的语句。
second&&echo "return 0"||echo "return other" 该句的输出为 return 0。这里有人可能会和C语言混淆,因为在C语言里0表示的是false。而这里的0表示函数执行成功,可以理解为true,所以会输出return 0。
命令
break,continue 和c语言基本类似
echo 了解一点即可echo -n 输出没有换行。
<ccid_nobr> </ccid_nobr>
<ccid_code>eval: 例子: //~ eval_s #!/bin/bash var1=abcd var2=var1 eval var3=\$var2 echo $var3 exit 0 ///////////////////////////</ccid_code>
|
eval相当于一个额外的$,它给出一个变量值的值,如例子里先是$var2使var3变成\$var1,又var1=abcd,所以var3变为abcd,连续解析了两次变量。
export:
看下面两个例子可以很好的说明export的作用。
<ccid_nobr> </ccid_nobr>
<ccid_code>//~ export1_s #!/bin/bash var1="this is var1" var2="this is var2" export var2 ./export2_s exit 0 ///////////////////////////
//~ export2_s #!/bin/bash echo "$var1" echo "$var2" exit 0 /////////////////////////
输出:
this is var2</ccid_code>
|
输出结果说明var1为空而var2却有值,这正是export起的作用,把var2变成了一个环境变量。
再看个例子:
<ccid_nobr> </ccid_nobr>
<ccid_code>#!/bin/bash echo $var1 echo $var2 echo $var3 exit 0 //////////////////////////
//~ set-a_s #!/bin/bash set -a var1="var1" var2="var2" var3="var3" ./set-a2_s exit 0 //////////////////////////
//~ set-a2_s 输出: var1 var2 var3</ccid_code>
|
set -a的作用就是把它之后声明的所有变量都export
printf:
和C语言里的printf用法很相似的一个命令,使用非常方便。
<ccid_nobr> </ccid_nobr>
<ccid_code>set:
//~ set_s #!/bin/bash fun1() { echo "a b c d" } set $(fun1) echo $1 echo $(date) set $(date) echo $1 exit 0 ///////////////////////</ccid_code>
输出: a 2008年 03月 06日 星期四 03:57:55 CST 2008年 |
date的输出是几个由空格分隔的值,set的作用能分隔出每个域。
shift:
就是让$2变$1,$3变$2,依此类推。
trap:
非常有用的一个命令,用于指定接受到信号后进行的动作,系统定义了非常多的信号类型,用trap -l命令可以查看所有的信号。
常见的几个信号有:
INT(2) 中断,按下ctrl+c组合键引发的
QUIT(3) 退出,按下ctrl+\引发
例子:
<ccid_nobr> </ccid_nobr>
<ccid_code>//~ trap_s #!/bin/bash trap var=2 INT echo "please enter ctrl+c" var=1 while [ $var = 1 ] do echo "in while" sleep 1 done exit 0 /////////////////////////</ccid_code>
|
这个例子在我按下ctrl+c后改变了var的值,所以跳出循环,程序结束。
shell下的程序设计非常强大,你可以用它做出很多小工具,让你的使用linux系统更加流畅。shell还有非常多的功能文中没有提到,需要大家发现问题后再自己去解决。
分享到:
相关推荐
"Linux/UNIX Shell编程语言设计系统监控程序.pdf" 本文档主要介绍了使用Linux/UNIX Shell编程语言设计系统监控程序的方法。该程序使用Shell编程语言设计CGI脚本,通过使用过滤器awk在某些输出行中提取信息,然后在...
### Shell编程(Linux系统) #### 为什么进行Shell编程 在Linux系统中,虽然存在各种图形界面工具,但Shell依然是一个非常强大的工具。Shell不仅集合了大量的命令,还是一种优秀的编程语言。借助Shell,用户可以实现...
模拟shell编程 _shell 编程是操作系统课程设计的重要组成部分,旨在实现简单的shell命令,并学习计算机软件技术,特别是计算机操作系统技术。_ Shell 编程的概念和原理: Shell 术语最普通的解释就是:用户用来...
在本Linux+Shell编程课程设计中,我们将深入探讨如何利用Shell脚本来实现Linux系统的用户管理。Shell编程是Linux系统中的重要一环,它提供了一种简单而强大的方式来自动化日常的系统任务,包括用户账户的创建、修改...
《Linux环境编程从应用到内核》是一本深入探讨Linux操作系统下编程技术的书籍,它涵盖了从用户空间应用程序开发到内核级别的系统编程的广泛领域。以下是对这本书中可能涉及的一些核心知识点的详细阐述: 1. **Linux...
### Linux 下 Shell 编程实验报告 - 考勤系统 #### 实验目的 通过本实验,学生将能够深入理解 Shell 程序的设计方法,包括但不限于如何编写、运行及调试 Shell 脚本。此外,学生还将学习如何利用 Shell 脚本来模拟...
### Linux操作系统 Shell程序设计 #### 实验目的 本次实验旨在帮助学习者掌握Linux批处理文件(即shell脚本)的编辑与执行技能,并熟练运用批处理语言进行编程。此外,还将深入了解Linux系统自带的文本编辑器vi的...
通过这个“Linux环境C程序设计源代码”的学习,你将能够编写出能在Linux系统中运行的C程序,理解操作系统级别的编程,并具备解决实际问题的能力。记住,理论知识与实践相结合是掌握这些概念的关键。
Shell编程是Linux系统中一种强大的命令解释器,它允许用户编写脚本来自动化常见的操作系统任务。西南科大的Linux实验报告着重于掌握Shell编程的基本特性和实际应用。 **一、实验目的** 1. **Shell编程基础**:理解...
Linux Shell程序设计是Linux系统管理与自动化任务处理的重要部分,主要使用Bash(Bourne-Again SHell)脚本来编写。在这个“linux shell程序设计实验1”中,我们将探讨如何利用基本的`case`和`if`语句来编写简单的...
linux 程序设计 实验 shell 编程 学生成绩管理系统
Linux编程SHELL编程实验报告是Linux编程课程设计报告的一部分,该报告的目的是为了熟悉Shell环境和Shell的执行、熟悉Shell的基本语法和语句、了解Shell程序的调试方法。 在该实验报告中,首先介绍了Linux操作系统的...
【Linux Shell程序设计 Ubuntu 实验二】实验主要涵盖了Linux操作系统中的Shell编程基础,适用于Ubuntu环境。实验目的是让学生掌握Bash Shell的创建与执行方法,理解基本语法,并学会编写Shell脚本。实验报告要求遵循...
重点突出:对C语言本质和Linux程序设计中容易遇到的问题和难点进行了深入剖析 对比讲解:对Linux和Windows系统开发中的相关概念进行了对比讲解 注重实用:提供了643个典型示例、412个开发技巧和2个综合开发...
《Linux与UNIX Shell编程指南》是一本专为程序员和系统管理员设计的实用教程,由David Tansley撰写,徐焱、张春萌等人翻译。这本书深入浅出地讲解了Shell编程的基本概念、命令语法和高级技巧,同时也涵盖了UNIX操作...
【Linux Shell程序设计】 在Linux世界中,Shell扮演着至关重要的...通过学习和熟练掌握Shell程序设计,用户不仅可以高效地管理Linux系统,还能编写出自动化任务脚本,提升工作效率,更好地利用Linux系统的强大功能。
本文将深入探讨这两个主题,并结合《Linux+命令行和shell脚本编程宝典》及《Linux程序设计 中文第4版》两本书中的关键知识点。 一、Linux命令行基础 在Linux中,命令行是与系统交互的主要方式,通过键入不同的命令...