文档章节

Linux操作系统之Shell程序设计

x
 xiangyunyan
发布于 06/20 09:17
字数 1583
阅读 7
收藏 0

Shell是种命令解释程序,也可以看作是一种命令语言的解释器。 用户在与Shell交互时所输入的命令行必须符合Shell命令的语法和语义规范,才能够被Shell理解并执行。Shell所使用的这种命令语言称为Shell 语言。Shell语言不仅仅是一种交互式语言, 它还是一种可编程的程序设计语言。将若干个Shell命令行写入个文件就构成了一个Shell程序,它可以被Shell逐条地解释执行。用Shell语言编写的Shell程序可以使用各种变量、参数和控制结构来组织命令流程,自动化地完成各种复杂冗繁的处理工作。

Linux系统中广泛使用了Shell程序来实现系统的初启、配置、管理和维护等工作。因此,熟练掌握Shell语言可以更加深入地理解系统的运行机制,更加有效地使用和管理系统。

Shell 语言的特点:

与其他编程语言相比,Shell 语言具有如下特点:

(1) Shell是一种解释性语言。这就是说,用Shell语言写的程序不需编译,可以直接由Shell进程解释执行。解释性语言的特点是快捷方便,可以即编即用,但与编译性语言的目标程序来比,解释性语言程序的运行速度要低一些。

(2) Shell 是基于字符串的语言。Shell 只是做字符串处理,不支持复杂的数据结构和运算。Shell 的输出也全部是字符方式的。

(3) Shell是命令级语言。Shell 程序全部由命令而不是语句组成,几乎所有的Shell命令和可执行程序都可用来编写Shell程序。Shell命令十分丰富,命令的组合功能也十分强大。所以,用简单的命令和命令组合形成的Shell程序即简洁又高效,可以实现各种复杂的功能。另外需要说明的是,不同版本的Shell程序不完全兼容,差别可能是细微的,也可能是明显的。

Shell程序也称Shell脚本(script),是由一系列 Shell命令为基本元素构成的文本文件。简单的Shell程序可以只是一个命令序列,高级Shell程序中还可以包含复杂的命令组合,定义各种参数和变量、使用条件命令、控制结构以及其他高级特性。

Shell程序的建立与执行

Shell脚本文是文本文件,因此可以用任何文本编辑器(如vi, emacs等)建立和编辑脚本。Shell脚本文件的名称没有限定的拓展名,通常不带拓展名或者带“.sh”拓展名。 

Shell脚本的执行方式主要有3种。

(1)将脚本作为可执行文件执行:

  1. $ chmod a+x hello  
  2. $ ./hello  

用文本编辑器生成的脚本文件默认是没有x权限的,也就是说是不可直接执行的。赋予x权限后,脚本就可以像一般的 Shell命令那样执行了。如果脚本不在系统存放命令的标准目录下,需要在执行时指定脚本的路径。上例中脚本hllo放在当前目录下,所以要用.hello来运行。

(2)启动一一个Shell子进程来执行脚本文件:

  1. $ bash hello  #bash < hello  

执行此命令行时,Shell 进程先启动一个bash子进程,让它执行hello脚本的内容,执行完毕后bash子进程也终止。在这种方式中,脚本是作为命令参数传给子Shell 的。子Shell运行时读取该文件并执行其内容,因此脚本文件不必有执行权限。这种方法常用于运行一个其他版本的Sbell脚本。假如当前Shell是bash,而chello是用C Shell语言写的脚本,则要执行这个脚本时可以用csh chello命令启动一个csh进程来执行它。

(3)让当前Shell进程执行脚本文件:

  1. $.hello     

“.”是一个shell内部命令,hello是它的参数。命令的功能是读取参数指定的文件,执行其内容。这种执行方式与第2种方式类似,区别在于此方式是由当前Shell进程来执行脚本文件的。

前面大致简介了一下什么是Shell脚本,它有什么特点,做什么用的,想必现在大家对这个有了一定程度的了解,当然这只是学习Linux操作系统中所接触到的冰山一角,想要学好Linux操作系统,就必须学好Shell,那怎么样才能学好Shell呢?我们先看一个简单的Shell程序:

  1. $ cat hello       # hello program  
  2. # this is a shell script to say hello  
  3. echo Hello World!  
  4. echo -n “Today is”  
  5. date “+%A,%B %d,%Y.”  
  6. $.hello  # run  
  7. Hello World!  
  8. Today is Sunday, July 15, 2018.  
  9. $_  

这个hello程序的第二行是注释,后面3行是命令,在执行程序时,shell依次执行这3个命令,并输出显示信息。这就是一个简单的hello world代码,几乎所有的程序员学习如何编写代码都是从这里起家的。

学习linux运维,这是必经之路,不知道各位读者是自学呢,还是在校老师教导,不过在我看来,学习技术还是的有一个完整的体系,前几天逛网页,看到一个关于linux学习的网站,叫linuxprobe,配套有书籍叫《Linux就该这么学》,进去瞄了一眼,感觉还不错,里面的知识架构很好,如果各位有兴趣可以一阅!不管你学不学,资料就在哪里不断增多;不管你学不学习,时间就那么多,逐渐流逝!

祝各位运维人前程似锦!加油!!!

© 著作权归作者所有

x
粉丝 2
博文 112
码字总数 38393
作品 0
长沙
私信 提问
linux的多用户

linux继承了unix的很大一部分东西,自设计开始就是多用户的,那么这个多用户到底体现在什么地方呢?多用户和linux操作系统的设计又有何关联呢? 首先看看原始的多用户,所谓多用户就是有很多...

晨曦之光
2012/04/10
1K
0
Linux下的Shell工作原理

Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不 属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并 执行用户打入的各种命令,实现用户与Linux核心...

yhhedu
2014/05/04
0
0
Linux命令与shell

资料来自:《http://blog.chinaunix.net/uid-14880649-id-2954340.html》 所谓shell就是命令解释程序。它提供了程序设计接口,可以使用程序来编程。学习shell对于Linux初学者理解Linux系统是...

hiqj
2015/09/07
19
0
Linux程序设计笔记 第1章linux程序设计

字体==楷体 使用的linux发行版中gentoo发行版,使用之前使用过debian,mini,unbuntu后来看到一篇介绍linux发行版的文章http://tieba.baidu.com/p/1180067796 和决定使用linux一样使用gento...

Heminzhang
2012/09/29
0
0
Linux操作系统之Shell程序设计

Shell是种命令解释程序,也可以看作是一种命令语言的解释器。 用户在与Shell交互时所输入的命令行必须符合Shell命令的语法和语义规范,才能够被Shell理解并执行。Shell所使用的这种命令语言称...

Linux就该这么学
06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部