【Linux操作系统】第7章 Shell编程
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/bin/false
test:x:500:500::/home/test:/bin/bash
Linux操作系统
7.1.3 创建及执行Shell脚本 1. 创建Shell脚本文件
Shell脚本是指使用用户环境 Shell提供的语法所编写
7-1所示。
Linux操作系统
用 命令 Linux Shell 系统调用
户 输出 进程 产生进程
Linux操作系统内核 计算机硬件
图7-1 Shell、用户及Linux操作系统内核之间关系
Linux操作系统
有一些命令(比如改变工作目录命令cd)是包含在 Shell内部的。还有一些命令(例如拷贝命令cp和移动命 令rm)是存在于文件系统中某个目录下的单独的程序。 对用户而言,不必关心一个命令是建立在Shell内部还 是一个单独的程序。
Linux操作系统
三月 2003 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
30 31
[root@redflag /root]#
Linux操作系统
另外,用户键入有关命令后,如果Shell找不到以其 中的命令名为名字的程序,就会给出错误信息。例如, 如果用户键入: [root@redflag /root]#mytest bash:mytest:command not found
#This script is a test!
echo –n "Date and time is: " date
Linux操作系统
echo –n "The Executable path is : "$PATH
echo "Your name is : `whoami` " echo –n "Your Current directory is : " pwd #end
Linux操作系统
2. 执行Shell脚本
Linux操作系统
第7章 Shell编程
7.1 Shell的基本概念 7.2 Shell语法
7.3 正则表达式
7.4 Shell编程综合实例
习题
Linux操作系统
7.1 Shell的基本概念
7.1.1 Shell的概念 Shell 是一个命令语言解释器,它拥有自己内建的 Shell 命令集, Shell也能被系统中其他应用程序调用。 用户在提示符下输入的命令都由Shell解释后传给Linux 核心。Shell、用户及Linux操作系统内核之间关系如图
Linux操作系统
(3) 历史命令。Bash能自动跟踪用户每次输入的命令, 并把输入的命令保存在历史列表缓冲区。缓冲区的大
小由HISTSIZE变量控制。当用户每次登录后,home目
录下的“ .bash_history” 文件将初始化历史列表缓冲区。 也能通过history和fc命令执行、编辑历史命令。
(4) 别名。在Bash下,可用alias和unalias命令给命令
或可执行程序起别名和清除别名,这样就可以用自己 习惯的方式输入命令。
Linux操作系统
(5) 输入/输出重定向。输入重定向用于改变命令的输 入,输出重定向用于改变命令的输出。输出重定向更
为常用,它经常用于将命令的结果输入到文件中,而
Linux操作系统
On since Fri Mar 7 08:14 (EST) on tty1 idle
20 minutes 24 seconds
On since Fri Mar 7 08:17 (EST) on tty2 16 minutes idle On since Fri Mar 7 08:14 (EST) on pts/0 20 minutes 6 seconds idle
[root@redflag /root]#ls>>dir1.out
Linux操作系统
“>>”表示要将一条命令的输出结果追加到文件
dir1.out的后面,该文件的原有内容不被破坏,如果使 用“>”,则文件原有内容被覆盖。 (6) 管道。管道用于将一系列的命令连接起来,也就 是把前面命令的输出作为后面命令的输入。管道的命 令是“|”。
的脚本。如果你经常用到相同执行顺序的操作命令, 便可以将这些命令写成脚本文件,这样以后要做同样
的事情时,只要在命令行输入其文件名即可。本节会
以一个简单的实例,来介绍如何创建与执行 Shell脚本。
Linux操作系统
【实例7.3】 该实例会显示当前的日期时间、执行路径、用户账 号及所在的目录位置。 在文本编辑器中输入下列内容,并存为showinfo: #!/bin/bash
用“#”作提示符。 一旦出现了Shell提示符,就可以键入命令名称及命
令所需要的参数。Shell将执行这些命令。如果一条命
令花费了很长的时间来运行,或者在屏幕上产生了大 量的输出,可以在键盘上按【Ctrl-d】发出中断信号来 中断它(在正常结束之前,中止它的执行)。
Linux操作系统
当用户准备结束登录对话进程时,可以键入logout命 令、exit命令或文件结束符(EOF)(按【Ctrl-d】实现), 结束登录。 下面的例子显示了Shell如何来工作: [root@redflag /root]#cal 3 2003
不是屏幕上。输入重定向的命令是“ <” ,输出重定向 的命令是“>”。
Linux操作系统
【实例7.1】 ① 输入重定向:
[root@redflag /root]#wc</etc/passwd
20 23 726 ② 输出重定向: [root@redflag /root]#ls>dir.out 上面命令将ls命令的输出保存为文件dir.out。
输入命令
是内部还是外部命令 ? 外部 在搜索路径中查找命令 否 是
内部
找到 ?
给出错误信息
执行
图7-2 Shell对命令的解释过程
Linux操作系统
当普通用户成功登录后,系统将执行一个称为Shell 的程序。正是Shell进程提供了命令行提示符。作为默
认值,对普通用户用“$”作提示符,对超级用户(root)
Linux操作系统
Shell接到用户输入的命令后首先检查命令是否是内
部命令,若不是再检查是否是一个应用程序(这里的应 用程序可以是Linux本身的实用程序,如ls和rm,也可 以是购买的商业程序,如xv,或者是自由软件,如 emacs)。然后,Shell在搜索路径里寻找这些应用程序 (搜索路径就是一个能找到可执行程序的目录列表)。如 果键入的命令不是一个内部命令并且在路径里没有找 到这个可执行文件,将会显示一条错误信息。如果能 够成功找到命令,该内部命令或应用程序将被分解为 系统调用并传给Linux内核。Shell对命令的解释过程如 图7-2所示。
展),它支持任务控制,可以在命令行上挂起、后台执
行、唤醒或终止程序。
Linux操作系统
Bash是大多数Linux系统(包括红旗Linux系统)的默认
Shell。Bash有以下的优点: (1) 补全命令。当你在Bash命令提示符下输入命令或 程序名时,你不必输全命令或程序名,按【Tab】键, Bash将自动补全命令或程序名。 (2) 通 配 符 。 在 Bash 下 可 以 使 用 通 配 符 “ * ” 和 “?”。“*”可以替代多个字符,而“?”则替代一 个字符。
wc 命令统计出输入中的行数。假设 dir.out 的内容如下:
Linux操作系统
This is a test. Today is Monday.
Eveybody is here.
We should have a test. The final test is over. 那么该管道运行的结果应该是3。
Linux操作系统
C Shell是一种比Bourne Shell更适于编程的Shell,它
的语法与C语言很相似。Linux为喜欢使用C Shell的人 员提供了 Tcsh 。 Tcsh 是 C Shell 的一个扩展版本。 Tcsh 包括命令行编辑、可编程单词补全、拼写矫正、历史 命令替换、作业控制和类似 C 语言的语法,它提供比 Bourne Shell更多的提示符参数。 Korn Shell集合了C Shell和Bourne Shell的优点并且和 Bourne Shell完全兼容。Linux系统提供了pdksh(ksh的扩
Linux操作系统
【实例7.2】 [root@redflag /root]# cat dir.out|grep "test "|wc –l 管道将cat命令(列出一个文件的内容)的输出送给grep 命令, grep 命令在输入里查找单词 test , grep 的输出则 是所有包含单词test的行,这个输出又被送给wc命令,
Linux操作系统
Shell的另一个重要特性是它自身就是一个解释型的 程序设计语言。 Shell 程序设计语言支持绝大多数在高
级语言中能见到的程序元素,如函数、变量、数组和
程序控制结构。 Shell 编程语言简单易学,任何在提示 符中能键入的命令都能放到一个执行的Shell程序中。
Linux操作系统
此时可以看到,用户得到了一个没有找到该命令的
错误信息,这样的错误信息一般出现在用户输入错误 命令时。
Linux操作系统
7.1.2 Shell的种类
Linux 中 的 Shell 有 多 种 类 型 , 其 中 最 常 见 的 是 Bourne Shell (sh)、C Shell (csh)和Korn Shell (ksh)。三 种Shell各有优缺点。Bourne Shell是Unix最初始的Shell, 并且在每种Unix上都可以使用。Bourne Shell在Shell编 程方面相当优秀,但在处理与用户的交互方面做得不 如其他几种 Shell 。 Bash(Bourne Again Shell) 是 Bourne Shell的扩展,与Bourne Shell完全向下兼容,并且增加 了许多特性。它还包含了很多C Shell和Korn Shell中的 优点,有灵活和强大的编程接口,同时又有很友好的 用户界面。
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 shell编程实验作业(含答案)
Linux shell实验作业参考1.编写一个Shell脚本,实现输入一个数字,输出该数字的阶乘。
思路:使用for循环,从1到输入的数字进行累乘,最终输出结果。
#!/bin/bashecho "请输入一个数字:"read numfact=1for ((i=1;i<=$num;i++))dofact=$(($fact*$i))doneecho "阶乘为:$fact"2. 编写一个Shell脚本,实现输入一个目录,输出该目录下所有文件名和文件大小。
#!/bin/bash# 获取目录路径read -p "请输入目录路径:" dir_path# 判断目录是否存在if [ ! -d "$dir_path" ]; thenecho "目录不存在!"exit 1fi# 遍历目录下所有文件for file in "$dir_path"/*do# 判断是否是文件if [ -f "$file" ]; then# 获取文件名和大小file_name=$(basename "$file")file_size=$(du -h "$file" | awk '{print $1}')echo "$file_name : $file_size"fidone使用方法:➢将以上代码保存为一个.sh文件,例如:`list_files.sh`➢给该文件添加执行权限:`chmod +x list_files.sh`➢在终端中运行该脚本:`./list_files.sh`,然后输入目录路径即可。
3. 编写一个Shell脚本,实现输入一个字符串,输出该字符串中所有大写字母的个数。
脚本的基本思路是遍历输入的字符串,对于每个字符,判断是否为大写字母,如果是则计数器加一。
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+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系统下的用不同的文件后缀来表示不同的文件类型,但又不完全相同。
shell程序linux课程设计
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操作系统与应用技术[RHEL 8]》(贺学剑)教案 第15课 shell简易编程(二)
1课题 shell 简易编程(二)课时2课时(90 min ) 教学目标知识技能目标:(1)掌握while 语句的使用方法 (2)掌握for 语句的使用方法(3)掌握until 语句的使用方法 素质目标:(1)增强遵守规则的意识,养成按规矩行事的习惯(2)培养良好的逻辑思维能力,养成良好的shell 脚本编写习惯教学重难点 教学重点:while 语句、for 语句、until 语句的使用方法 教学难点:根据实际需要编写简单的shell 脚本 教学方法 案例分析法、问答法、讨论法、讲授法 教学用具 电脑、投影仪、多媒体课件、教材教学设计第1节课: 课前任务→考勤(2 min )→问题导入(5 min )→传授新知(38 min )第2节课:课堂讨论(15 min )→课堂实践(25 min )→课堂小结(3 min )→作业布置(2 min )教学过程 主要教学内容及步骤设计意图第一节课课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,预习本节课要讲的知识 【学生】完成课前任务通过课前任务,使学生提前预习要学的知识,提高课堂教效果考勤 (2 min )【教师】使用文旌课堂APP 进行签到 【学生】班干部报请假人员及原因 培养学生的组织纪律性,掌握学生的出勤情况 问题导入 (5 min )【教师】提出以下问题:循环语句有什么作用? 【学生】思考、举手回答通过问题导入的方法,引导学生主动思考,激发学生的学习兴趣传授新知 (38 min )【教师】通过学生的回答引入要讲的知识,介绍while 语句、for 语句和until 语句的相关知识一、while 语句while 语句由while 、do 和done 关键词组成,其语法格式如下。
while 条件表达式 do 命令列表 donewhile 语句的执行过程是,先判断条件表达式的值,如果它为真,则进入第一次循环并执行命令列表;接着再次判断条件表达式的值,如果依然为真,则进入第二次通过教师的讲解和演示,使学生了解while 语句、for 语句和until 语句的相关知识2循环继续执行命令列表;依次执行,直到条件表达式的值为假,退出循环并终止while 语句的执行。
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命令从键盘或者⽂件的某⼀⾏⽂本中读⼊信息,并将其赋给⼀个变量。
