`
lixinye0123
  • 浏览: 323464 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

Shell编程:Linux系统环境程序设计之路

阅读更多
 

函数

别的高级语言都有函数的感念,当然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编程语言设计系统监控程序.pdf

    Linux+shell编程课程设计——Linux用户管理的shell程序设计

    Linux+shell编程课程设计——Linux用户管理的shell程序设计

    linux下shell编程实验报告-考勤系统

    大学期间学习linux下的shell编程--考勤系统 带详细实验报告

    Linux C程序设计王者归来Part1

     重点突出:对C语言本质和Linux程序设计中容易遇到的问题和难点进行了深入剖析  对比讲解:对Linux和Windows系统开发中的相关概念进行了对比讲解  注重实用:提供了643个典型示例、412个开发技巧和2个综合开发...

    linux操作系统 shell程序设计

    掌握Linux批处理文件(shell脚本)的编辑和执行,熟悉批处理语言的编程方法。熟悉Linux提供的文本编辑器vi的使用。

    语言程序设计资料:Linux与UNIX+Shell编程指南.doc

    语言程序设计资料:Linux与UNIX+Shell编程指南.doc

    Linux Shell编程艺术.7z.002

    一直以来,shell编程是系统管理员必备的高级技能,通过学习shell编程,可以让计算机系统完成那些繁重并且琐碎的管理任务,从而可以节约大量的工作时间。本书通过大量的应用实例,以循序渐进的方式,由浅入深地逐步...

    Linux下Shell编程

    Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。 为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)...

    shell 编程 学生成绩管理系统

    linux 程序设计 实验 shell 编程 学生成绩管理系统

    Linux Shell编程艺术.7z.003

    Linux Shell编程艺术.7z...本书通过大量的应用实例,以循序渐进的方式,由浅入深地逐步介绍shell的各个知识点,从而引领读者轻松跨过shell程序设计的门槛,最终摆脱繁忙而且低效率的工作状态,达到轻松管理系统的目的。

    实战Linux Shell编程与服务器管理-作者:卧龙小三(1)

    管理者必须具备相当程度的Shell操控能力与Shell程序设计能力,卧龙小三拥有丰富的主机管理实务经验,以及多年的教学经验,相信这本《实战Linux Shell编程与服务器管理》必能引领读者轻松跨越Bash Shell程序设计的...

    西南科大+Linux实验报告+shell程序开发

    任务一:掌握Shell编程的基本特点。 任务二:掌握shell脚本的编写 任务三:应用Shell程序设计方法,能分析Shell程序结构;掌握Shell程序开发环境的使用;能根据Shell程序功能、安全管理方面的需求,设计Shell程序...

    Linux 下 Shell的工作原理

    它是命令语言、命令解释程序及程序设计语言的统称。  shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出...

    模拟shell编程

    操作系统课程设计模拟shell编程,实现简单的shell命令

    linux下程序设计之shell编程.doc

    linux下程序设计之shell编程.doc

    linux下程序设计之shell编程.docx

    linux下程序设计之shell编程.docx

    Linux系统编程教程

    二、服务器开发:需要学习Linux 程序设计和Linux 网络编程。 三、嵌入式Linux 应用程序:需要学习C 语言和基本的Linux 常识。 四、嵌入式Linux 驱动:除了需要学习“嵌入式Linux 应用程序”的知识以外,还需要了 ...

Global site tag (gtag.js) - Google Analytics