Linux命令行与shell脚本编程大全
译者序2012-08-16 13:31 武海峰译人民邮电出版社我要评论(0)字号:T | T《Linux命令行与shell脚本编程大全(第2版)》本书是一本关于Linux 命令行与shell 脚本编程的全面教程。
全书分为四部分:第一部分介绍Linuxshell 命令行;第二部分介绍shell 脚本编程基础;第三部分深入探讨shell 脚本编程的高级内容;第四部分介绍如何在现实环境中使用shell 脚本。
本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。
本节为译者序。
AD:译者序欢迎来到命令行和shell脚本编程的世界!看到这篇序言,说明你已经翻开这本超过600页的书,愿意花时间去了解命令行和shell脚本编程的细节。
在Linux世界中,这种精神非常重要,我们将这种不满足于现状、愿意潜心了解其中细节而作出进一步改进的精神称为"黑客精神"。
正是这种黑客精神激励着成百上千人一起协作、不断改进着Linux内核,使其支持更多的硬件、具备更多有趣的功能。
越来越多的硬件厂商成立了Linux开发团队,向Linux内核贡献代码,使其能够运行在他们的硬件平台上或顺利地使用他们的硬件。
也正是这种黑客精神和GNU的开放性,才使得Linux在服务器操作系统领域和移动设备操作系统领域获得了迅捷而长足的发展。
今天,移动互联网应用的流行使得每周都有成百上千的应用部署在云平台上,而背后支撑这些云的正是Linux。
这些应用大多分成两部分:作为移动应用的一部分会部署在用户的手持设备上,实现用户交互、数据的采集和传送;作为Web应用的另一部分部署在远端Linux服务器上,存储数据并进行一些定期的数据处理。
这时,要进行Linux服务器上大量的数据处理和管理工作,以及Web应用的部署和监测,你就需要命令行和shell脚本的帮助。
在Linux系统中,大部分的系统配置和管理都是通过shell脚本来完成,而Linux对shell脚本的良好支持又使其成为系统配置和管理自动化的首选。
加之几乎所有Linux主机都支持通过SSH远程访问来进行系统配置,大多数时候你都是在命令行下完成这些配置和管理工作。
当然,伴随着便利性的还有巨大的破坏性。
稍不留神,你可能就会将整个根目录全部干掉,或者错误处理重要的配置文件。
这时,了解命令行和shell脚本编程细节、遵循Linux使用规范就显得格外重要了。
本书面向系统管理员、配置管理人员、系统开发人员,以及所有想有效使用Linux系统的黑客。
除了Linux外,本书内容还适用于提供了命令行界面和shell脚本编程支持的其他类Unix系统(我们称之为"*nix"系统),其中包括BSD和Mac OS X。
读过本书后,如果想继续了解shell脚本编程,你可以接着看Wicked Cool Shell Scripts。
这本书提供了大量的例子和解释供你学习。
如果有意扩展Linux系统管理方面的知识,可以参考IBM的Linux Performance and Tuning Guidelines和Linux Administration Handbook (Second Edition)。
如果对shell如何工作感到好奇,Use the source, Luke! 最简单的shell--yash 只有一百来行。
这里要特别感谢图灵公司的傅志红和罗词亮两位老师。
他们的细致工作使得这本译作中的诸多术语都得以一一推敲,他们的耐心等待使我得以在旅行中完成本书的翻译工作。
尽管我在翻译过程中小心翼翼,尽力排查原书中的错误、尽量避免中文表达上的问题,但囿于经验和疏忽,译作中难免有疏漏和问题。
还请读者朋友给予反馈,我们会在图灵社区维护一份勘误表(/book/980),并尽量为您在阅读本书中遇到的问题提供力所能及的帮助。
1.1什么是Linux2012-08-16 13:33 武海峰译人民邮电出版社我要评论(0)字号:T | T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linux shell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。
本节为大家介绍什么是Linux。
AD:第1章初识Linux shell本章内容什么是LinuxLinux内核的组成部分探索Linux桌面了解Linux发行版在深入研究如何使用Linux命令行和shell之前,最好先了解一下什么是Linux、它的历史及运作方式。
本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。
1.1什么是Linux如果以前从未接触过Linux,你可能会对为什么会存在这么多不同的Linux发行版有些困惑。
在看Linux软件包时,你肯定听过发行版、LiveCD和GNU之类的术语,也肯定被搞晕过。
第一次接触Linux的人理解这些会有些困难。
本章将在你了解命令和脚本之前,揭示Linux系统内部结构的一些信息。
首先,Linux可划分为以下四部分:Linux内核;GNU工具组件;图形化桌面环境;应用软件。
在Linux系统里,这四部分中的每一部分都扮演着一个特别的角色。
如果将它们分开来,每一部分都没太大的作用。
图1-1是Linux系统的基本结构框图,说明了各部分是如何协作起来构成整个Linux系统的。
本节将会详细介绍这四部分,然后将概述它们是如何一起协作构成一个完整的Linux系统的。
【责任编辑:book TEL:(010)68476606】1.1.1深入探究Linux内核(1)2012-08-16 13:33 武海峰译人民邮电出版社我要评论(0)字号:T | T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linux shell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。
本节为大家介绍深入探究Linux内核。
AD:1.1.1深入探究Linux内核(1)Linux系统的核心是内核。
内核控制着计算机系统上的所有硬件和软件:必要时分配硬件,有需要时执行软件。
如果你一直都在关注Linux世界,那么毫无疑问,你肯定听说过Linus Torvalds。
Linus还在赫尔辛基大学上学时就开发了第一版Linux内核。
起初他只是希望Linux成为Unix操作系统的一份副本,因为当时Unix操作系统在很多大学都很流行。
当Linus完成了开发工作后,他将Linux内核发布到了互联网社区并征求改进意见。
这个简单的动作引发了计算机操作系统领域内的一场革命。
很快,Linus就收到了来自世界各地的学生和专业程序员的各种建议。
如果Linux内核允许任何人修改内核程序代码,那么随之而来的将是完全的混乱。
简单起见,Linus 担当起了所有改进建议的把关员。
能否将建议代码放进内核完全取决于Linus的决定。
时至今日,这种概念依然在Linux内核代码开发过程中继续使用,所不同的是,现在是由一组开发人员来做这件事,而不再是Linus一个人了。
内核基本负责以下四项主要功能:系统内存管理;软件程序管理;硬件设备管理;文件系统管理。
后面几节将会进一步探究其中的每一项功能。
1. 系统内存管理操作系统内核的基本功能之一是内存管理。
内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即并不实际存在的内存)。
内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。
内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存存储单元中的内容。
这使得系统以为它拥有比物理内存更多的可用内存(如图1-2所示)。
内存存储单元会被按组分成很多块,这些块称作页面(page)。
内核会将每个内存页面放在物理内存或交换空间。
然后,内核会维护一个内存页面表,来指明哪能些页面位于物理内存内,哪些页面被换到磁盘上。
内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称之为换出,swapping out)--即使还有可用内存。
当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面来给它让出空间,然后从交换空间换入(swapping in)请求的内存页面。
显然,这个过程要花费时间,并使得运行中的进程变慢。
只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。
你可以查看专门的/proc/meminfo文件来观察Linux系统上虚拟内存的当前状态。
下面是/proc/meminfo文件的一个样例。
1.rich@rich-desktop:~$ cat /proc/meminfo2.MemTotal: 1026084 kB3.MemFree: 666356 kB4.Buffers: 49900 kB5.Cached: 152272 kB6.SwapCached: 0 kB7.Active: 171468 kB8.Inactive: 154196 kB9.Active(anon): 131056 kB10.Inactive(anon): 32 kB11.Active(file): 40412 kB12.Inactive(file): 154164 kB13.Unevictable: 12 kB14.Mlocked: 12 kB15.HighTotal: 139208 kB16.HighFree: 252 kB17.LowTotal: 886876 kB18.LowFree: 666104 kB19.SwapTotal: 2781176 kB20.SwapFree: 2781176 kB21.Dirty: 588 kB22.Writeback: 0 kB23.AnonPages: 123500 kB24.Mapped: 52232 kB25.Shmem: 7600 kB26.Slab: 17676 kB27.SReclaimable: 9788 kB28.SUnreclaim: 7888 kB29.KernelStack: 2656 kB30.PageTables: 5072 kB31.NFS_Unstable: 0 kB32.Bounce: 0 kB33.WritebackTmp: 0 kBmitLimit: 3294216 kBmitted_AS: 1234480 kB36.VmallocTotal: 122880 kB37.VmallocUsed: 7520 kB38.VmallocChunk: 110672 kB39.HardwareCorrupted: 0 kB40.HugePages_Total: 041.HugePages_Free: 042.HugePages_Rsvd: 043.HugePages_Surp: 044.Hugepagesize: 4096 kB45.DirectMap4k: 12280 kB46.DirectMap4M: 897024 kB47.rich@rich-desktop:~$1.1.1深入探究Linux内核(2)2012-08-16 13:33 武海峰译人民邮电出版社我要评论(0)字号:T | T综合评级:想读(3)在读(0)已读(0)品书斋鉴(0)已有3人发表书评《Linux命令行与shell脚本编程大全(第2版)》第1章初识Linux shell,本章将带你逐步了解什么是Linux,并介绍命令行和shell在Linux整体架构中的位置。
linux操作系统任务十shell 编程基础
不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" 不被引号包围的字符串 "包围的字符串一样。字符串中不能出现空格,否则空格后边的字符
串会作为其他变量或者命令解析。
管道操作
Shell数组中可以存放多个值。Bash Shell 只支持一维数组,初始化时不 需要定义数组大小。在 Shell 中用括号( )来表示数组,数组元素之间用空 格来分隔。定义数组的一般形式如下: Array_name=(ele1 ele2 ele3... eleN)
创建shell脚本
可以在Shell脚本中创建用户自定义变量,用户变量可以存储临时数据 并在整个脚本中使用,类似于程序语言中的变量。变量命名规则如下 :
1.任意字母数字或下划线,长度不超过20个,不能以数字开头; 2.用户变量区分大小写; 3.使用=赋值,变量、=、值之间不能有空格;
创建shell脚本
引用变量的时候一定要在前面加 $,对变量赋值的时候,被赋值的变量不需要 加 $。 有时候用户需存储某个命令的输出信息,可以把命令的输出赋值给变量,赋值 规则有两种: 1.`命令` ,`是反引号,不是引号。 2.$(命令)
例: LS=`ls` echo $LS echo "===================================" LSL=$(ls -l) echo $LSL
$a -ne $b
检测左边的数是否大于右边的,如果是返回 true。 $a -gt $b
检测左边的数是否小于右边的,如果是返回 true。 $a -lt $b
检测左边的数是否大于等于右边的,如果是返回 true。
检测左边的数是否小于等于右边的,如果是返回 true。
$a -ge $b [ $a -le $b ]
Shell脚本编程详解-吐血共享
第12章 Shell 脚本编程●Shell 命令行的运行 ●编写、修改权限和执行Shell 程序的步骤 ●在Shell 程序中使用参数和变量 ●表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序12-1 Shell 命令行书写规则◆ Shell 命令行的书写规则对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如:[root@localhost root]# ls a* -l;free;df长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “this is \>long command ” This is long command注意:“>”符号是自动产生的,而不是输入的。
12-2 编写/修改权限及执行Shell 程序的步骤◆ 编写Shell 程序◆ 执行Shell 程序Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。
Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。
在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。
首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。
12-2-1 编辑Shell程序编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。
[root@localhost bin]#vi date#! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”注意:#! /bin/sh通知采用Bash解释。
Linux操作系统(第4版)shell编程
引用变量时,需在变量名前面加“$”符号。 • 使用变量时,需要在变量名前加“$”符号,
例如echo $season。当然使用时也会遇到一些 比较特殊的情况,就是变量名包含在其他字符 串中,这时就需要用“{}”将变量名括起来。
10.1.3 管道
• 管道和输入输出重定向十分类似。管道的 作用是在一个命令的标准输出和另一个命 令的标准输入之间建立一个通道。
10.1.4 shell里的特殊字符
• 和其他编程语言一样,shell里也有特殊字 符,常见的有美元符号“$”、反斜线“\” 和引号。美元符号表示变量替换,即用其 后指定的变量的值来代替变量。反斜线“\” 为转义字符,用于告诉shell不要对其后面 的那个字符进行特殊处理,只当作普通字 符。而shell下的引号情况比较复杂,分为3 种:双引号“"”、单引号“'”和倒引号 “`”。
• conditionN为分支条件,每个分支条件后必须以两个分号“;;” 结尾。如果都无法匹配,可用“*”代替,相当于default。 10.4.2小节中的if/elif/.../else结构多重分支语句示例也可改写 成如下形式。
• #!/bin/bash • case "$#" in • 0) echo "You didn't enter any parameter" • ;; • 1) echo "You entered only one parameter" • ;; • *) echo "You entered $# parameters" • ;; • esac • 当分支条件较多时,case语句将比if的多重分支显得简洁清晰。
shell脚本编程(完结版)
if [ 条件表达式 2 ] then …… …… else …… …… fi
命令串; else
命令串; fi
如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦
1. 整数测试运算
test int1 -eq int2: 判断两个数是否相等 test int1 -ne int2: 判断两个数是否不相等 test int1 -gt int2: 判断整数 1 是否大于整数 2 test int1 -ge int2: 判断整数 1 是否大于等于整数 2 test int1 -lt int2: 判断整数 1 是否小于整数 2 test int1 -le int2: 判断整数 1 是否小于等于整数 2 整数测试也可以使用 let 命令或双圆括号 相关操作为:== 、!= 、> 、>= 、< 、<= 如: x=1; [ $x -eq 1 ]; echo $? x=1; let "$x == 1"; echo $? x=1; (($x+1>= 2 )); echo $? 两种测试方法的区别: 使用的操作符不同 let 和 双圆括号中可以使用算术表达式,而中括号不能 let 和 双圆括号中,操作符两边可以不留空格
1. 整数测试运算 .................................................4 2. 字符串测试运算 ...............................................4 3. 文件测试运算 .................................................5 4. 逻辑运算 .....................................................5 第二节 在 shell 脚本中进行条件控制 ................................ 5 第三节 在 shell 脚本中进行 for 循环 ................................ 7 第四节 在 shell 脚本中进行 while 循环 .............................. 8 第五节 在 shell 脚本中使用 util 循环 ............................... 8 第六节 在 shell 脚本中使用函数 .................................... 8 第七节 shell 脚本之 echo 和 expr 讲解 ................................ 9 第八节 shell 脚本循环终止之 break 和 continue ..................... 10 第九节 shell 脚本之 exit 和 sleep ................................. 11 第十节 shell 脚本之 select 循环与菜单 ............................. 11 第十一节 shell 脚本之循环控制 shift 命令 .......................... 11 第十二节 shell 脚本之字符串操作 ................................... 11 第十三节 shell 脚本之数组实现 ..................................... 12 第十四节 shell 脚本之脚本调试 ..................................... 12 第十五节 shell 脚本之编程小结 ..................................... 12 程序例程 ......................................................... 14 习题实训 ......................................................... 29 综合实例 ......................................................... 31 1. 需求分析....................................................31 2.系统设计 ....................................................31 3.程序代码 ....................................................31 声明 ............................................................. 35
[精品]linux下编译运行程序命令大全
gcc警告提示功能
当GCC在编译不符合ANSI/ISO C语言标准的源代码时,如果加上了pedantic选项,那么使用了扩展语法的地方将产生相应的警告信息:
# gcc -pedantic illcode.c -o illcode illcode.c: In function `main': illcode.c:9: ISO C89 does not support `long long' illcode.c:8: return type of `main' is not `int'
编译并运行上述代码,会产生一个严重的段错误 (Segmentation fault)如下:
gcc -g crash.c -o crash ./crash Input an integer:10 Segmentation fault
程序调试工具—gdb
使用下表中的命令,可以进行shell中的命令
项目问题二—C程序的编译
Linux应用程序表现为2种特殊类型的文件:可执行文 件和脚本文件。可执行文件是计算机可以直接运行的 程序,相当于Windows的.exe文件。脚本文件是一组 指令的集合,相当于Windows的.bat文件。 在POSIX兼容的系统中,C语言编译器被称为 c89.Linux尽量实现相关标准,c89,cc和gcc这些命 令全都指向系统的C语言编译器,通常是GNU C编译 器,或者称为gcc。
需要注意的是,-pedantic编译选项并不能保证被编译程序与ANSI/ISO C 标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。 或者换句话说, -pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码,但不是全部,事实上只有ANSI/ISO C语言标准中要求进行 编译器诊断的那些情况,才有可能被GCC发现并提出警告。 除了-pedantic之外,GCC还有一些其它编译选项也能够产生有用的警告 信息。这些选项大多以-W开头,其中最有价值的当数-Wall了,使用它能 够使GCC产生尽可能多的警告信息:
linux+shell脚本语言基础知识
linux+shell脚本语言基础知识linuxshell脚本语言基础知识一.shell简介linux系统的shell做为操作系统的外壳,为用户提供更多采用操作系统的界面,更确切的说,shell是用户与linux操作系统沟通的桥梁。
用户既可以输入命令执行,又可以利用shell脚本编程,完成更加复杂的操作。
shell就是一个命令解释器,它从输出设备加载命令,再将其变为计算机可以以了解的指令,然后执行它。
在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。
linux的shell种类众多,常用的存有:bourneshell(/usr/bin/sh或/bin/sh)、bourneagainshell(/bin/bash)、cshell(/usr/bin/csh)、kshell(/usr/bin/ksh)、shellforroot(/sbin/sh),等等。
不同的shell语言的语法有所不同,所以不能交换使用。
每种shell都有其特色之处,基本上,掌握其中任何一种就足够了。
通常用bash,也就是bourneagainshell进行编程。
二.shell采用1.建立和运行shell程序shell脚本程序:按照一定的语法结构把若干linux命令非政府在一起,就是这些命令按照我们的要求完成一定的功能。
它可以进行类似程序的编写,并且不需要编译就能执行。
(只需修改其权限)像是撰写高级语言的程序一样,撰写shell程序须要一个文本编辑器,如vi和vim,通常采用vim文本编辑器,积极支持更便捷的填入模式。
首先采用vim编辑器编辑一个hello.sh文件:#!/bin/bash#helloworldexampleecho\这样,一个最简单的shell程序就撰写完了。
第一行:#!说明hello.sh这个文件的类型的,这有点类似于windows系统下的用不同的文件后缀来表示不同的文件类型,但又不完全相同。
Linux命令行与shell脚本编程大全(第4版)
第5章理解shell
5.1 shell的类型 5.2 shell的父子关系 5.3理解外部命令和内建命令 5.4小结
第6章 Linux环境变量
6.1什么是环境变量 6.2设置用户自定义变量 6.3删除环境变量 6.4默认的shell环境变量 6.5设置PATH环境变量 6.6定位系统环境变量 6.7数组变量 6.8小结
第10章文本编辑器
10.1 vim编辑器 10.2 nano编辑器 10.3 Emacs编辑器 10.4 KDE系编辑器 10.5 GNOME编辑器 10.6小结
第11章构建基础脚本 第12章结构化命令
第13章更多的结构化 命令
第14章处理用户输入
第15章呈现数 据
第16章脚本控 制
第11章构建基础脚本
第24章编写简单的脚本实用工具
24.1备份 24.2删除账户 24.3系统监控 24.4小结
第25章井井有条
25.1理解版本控制 25.2设置Git环境 25.3使用Git提交文件 25.4小结
A.2常见的bash命 令
A.1内建命令
A.3环境变量
B.1 sed编辑 器
B.2 gawk程序
作者介绍
Linux命令行与shell脚本编程 大全(第4版)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
02 内容摘要 04 精彩摘录 06 作者介绍
思维导图
本书关键字分析思维导图
命令行
脚本
脚本
书
编程 学习
实战
教程 小结
脚本
文件
处理
版
第章
基础
命令
变量
演练
模式
linux操作系统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_基础教程--Shell脚本编程
学习各种管理和监视命令的使用
学习各种文本文件工具的使用
2014年12月24日
变量和表达式
2014年12月24日
18
Shell 变量操作
变量替换扩展
输入
变量测试 变量的字符串操作 变量的间接引用 $[expression] $((expression)) expr let declare -i
Shell 脚本的执行
PATH 环境变量的默认值不包含当前目录, 若脚本文件在当前目录,应使用 ./script-file
PATH 环境变量的默认值包含 ~/bin 目录, 用户可以将自己的脚本文件存放在 ~/bin 目录, 之后即可直接调用脚本文件名执行脚本了
2014年12月24日
7
Shell 脚本的编码规范
${var/%old/new}
用new替换${var}中结尾部分与old匹配的部分
注: (1)old 中可以使用 通配符。 (2)var 可以是 @ 或 *,表示对每个位置参数进行替换
sh –n 脚本名
对脚本进行语法检查,但不执行脚本。如果存在语法错误,shell 会报错,如果没有错误,则不显示任何内容。
2014年12月24日
12
脚本调试举例 1
对脚本进行语法检查
$ bash -n greetings.sh
显示脚本中每个原始命令行及其执行结果
$ bash -v greetings.sh
2014年12月24日 22
字符串变量替换扩展举例1
str='I love linux. I love UNIX too.‟
Linux之19——Shell编程基础详解
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命令从键盘或者⽂件的某⼀⾏⽂本中读⼊信息,并将其赋给⼀个变量。
