Linux Shell 编程快速入门

合集下载

linux操作系统任务十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脚本编写基础

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。

Shell既是一种命令语言,又是一种程序设计语言。

作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。

因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。

可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

一、什么是shell当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。

那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。

当用户使用Linux时是通过命令来完成所需工作的。

一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。

shell解释用户输入的命令,就象DOS里的所做的一样,所不同的是,在DOS中,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。

一般的Linux系统都将bash作为默认的shell。

二、几种流行的shell目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:#echo $SHELL$SHELL是一个环境变量,它记录用户所使用的shell类型。

你可以用命令:#shell-name来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。

实验指导书--实验03 Linux Shell编程

实验指导书--实验03 Linux Shell编程

实验三: Linux Shell编程
实验学时: 2
实验类型: 设计
实验要求: 必修
一、实验目的
通过本实验的学习, 使学生掌握Shell编程的基本方法。

二、实验内容
实验内容: Linux Shell实现题目所要求的功能。

三、实验原理、方法和手段

四、实验组织运行要求
以学生自主训练为主的开放模式组织教学
五、实验条件
PC机
六、实验步骤
1.编写一个Shell脚本, 完成以下功能:
1)显示文字“Waiting for a while….”
Vi helloworld
#!/bin/bash
Echo “Waiting for a while….”
2)显示当前目录下面扩展名为”.h”的文件和目录, 并输出重定向到/home/file.txt文件
Find .h
Find .h >>/home/file.txt
提示: 显示文字可使用echo命令, 搜索文件可使用find命令
2.编写一个Shell脚本, 完成以下功能
计算8以内(含8)不是3的整数倍的数字的和
3.编写一个Shell脚本, 在当前目录创建5个目录, 目录的命名形式分别为: dir-1, dir-2, …., dir-5
七、思考题
比较C语言和Shell编程的一些异同点。

八、实验报告
实验预习: 学习shell编程的基本方法
实验记录: 记录解决问题所用的代码和运行结果
实验报告: 提交代码和运行结果
九、其它说明。

Shell脚本编程详解-吐血共享

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解释。

shell编程基础知识点

shell编程基础知识点

shell编程基础知识点
一、Shell 编程基础知识
1、什么是 Shell
Shell 是一种用户使用的解释型程序,它是操作系统的一部分,派生自多种不同的系统。

它是一种命令解释器,它可以读取用户的输入,解释该输入,并执行相应的命令。

Linux 的 Shell 有很多种,如 bash,csh,ksh 等。

2、Shell 的特性
(1) 交互式:用户可以通过 Shell 的界面实现与计算机的交互,以便用户和计算机之间的信息交换。

(2) 自动化:Shell 可以将用户编写的一系列命令,保存为脚本,并在需要的时候自动执行,以减少用户的工作量。

(3) 扩展性:Shell 可以实现过滤和管道功能,可以与其他应用程序和编程语言结合使用,实现不同应用程序、不同编程语言之间的信息传递。

3、Shell 命令
(1)ls : 列出目录内容。

(2)cd : 改变目录。

(3)pwd : 显示当前所在目录。

(4)mkdir : 创建目录。

(5)rm : 删除文件或目录。

(6)cat : 显示文件内容。

(7)echo : 向屏幕输出指定字符串。

(8)exit : 退出当前 shell 环境。

(9)man : 查看指定命令的帮助文档。

(10)chmod : 改变文件权限。

linux+shell脚本语言基础知识

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脚本编程

Linux_基础教程--Shell脚本编程
17

学习各种管理和监视命令的使用


学习各种文本文件工具的使用

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.‟

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令shell脚本基本命令输出命令echo输出命令echo,基本模式就是echo [选项] [输出内容]输出内容如果包含空格,则必须将内容⽤双引号括起来。

选项-e可以使输出语句⽀持反斜线转义。

加⼊退格后就不会显⽰退格符左边的⼀个字符。

ascii码表中有对应的⼋进制和⼗六进制表⽰法,所以可以表⽰对应的字符。

显⽰环境变量的值:echo ${PATH}或echo $PATH,如果⼀个变量没有被设定,那么就什么都不返回。

颜⾊输出如将abcd⽤红⾊打印:echo -e "\e[1;31m abcd \e[0m"其中\e[1的意思是开启颜⾊输出,⽽\e[0m是结束颜⾊输出,31m代表红⾊,abcd是输出内容,其他颜⾊如下:第⼀个脚本与脚本执⾏⽅式新建⼀个脚本hello.sh:#!/bin/bash#the first programecho "hello world"exit 0其中第⼀⾏是声明,不是注释,不能省略,这是在指定使⽤哪个shell,如果没有这⾏有的程序可能⽆法执⾏。

第⼆⾏#开头的是注释,第四⾏是命令。

最后⼀⾏在设置回传值,在执⾏完该脚本后,执⾏echo $?就能查看这个值,可以通过这个⾃定义错误信息。

在脚本中有需要时要重新定义⼀下PATH环境变量,以便直接使⽤⼀些外部命令⽽不是写绝对路径:PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_144/bin:/opt/module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/root/bin export PATH执⾏shell脚本要先赋予其可rx权限:chomd 755 hello.sh然后再执⾏./hello.sh这⾥也可以⽤绝对路径执⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux shell编程快速入门——李朝征——一、上半部分:理论1、Shell简介1)常见的shell版本有Bourne Shell(简称sh)、C-Shell(简称csh)、Korn Shell(简称ksh)和Bourne Agine Shell(简称bash).2)我们通常用的shell是bash ,它在如图的位置:3)我们的Ubuntu下的功能:历史记忆功能、命令行补全功能、支持通配符功能、Shell内置命令以及执行用户自己编写的Shell脚本等都是bash的功劳;4)我们的“终端”本身就是一个shell,简称shell终端。

我们的shell命令诸如ls、sudo、rm 等多达5000多条,在shell中都是以“C 语言”的形式存在的,命令本身只不过是个运行那段相应的C语言代码的标记符号。

5)Shell常用的命令(这个自己学)。

6)我们编程有三种基本的说法:C编程、Makefile编程和Shell编程,其中shell编程又叫做“shell 脚本编程”,编出来的程序叫“脚本”。

7)Linux默认的Shell即为bash,当用户进入终端时,Linux系统会自动启动shell程序,与用户交互式进行操作,解析用户输入的命令,Shell提供一种高级编程语言,它有变量、关键字及控制语句,并且有自己的语法结构。

8)用户可以根据自己的需要方便地使用shell编程语言自己编写shell脚本。

使用shell脚本能大大地提高编程的效率。

9)Shell程序是解释执行的,不需要编译加载目标代码;shell脚本的建立同普通的文件建立方式是相同的,利用编辑器(vi、emacs、gedit均可)进行程序编写、录入和编辑。

10)Shell脚本有3种执行的方法:直接执行法:重定向执行法:可执行文件法:刚建立的wifi.sh文件显示为白色,即没有可执行权限。

我们可以先修改它的权限,使得所有用户都可执行。

如图:或者改成最高权限:这样就可以执行了:2、shell的变量1)shell有两类变量:环境变量和临时定义变量。

环境变量时永久性的变量,其值不会随shell脚本的结束而消失,而临时变量时shell内部变量,其使用范围仅限于它的程序,当程序执行完毕时,临时变量消失。

大小写表示的变量的意义是不同的,即严格区分大小写。

2)如何定义临时变量?变量赋值的一般形式为:变量名=字符串如:mypath=/home/wth/就是把/home/wth/赋给变量mypath。

但是要使用这个变量的时候就要在变量前面加一个“$”符号,如:打印的效果如下:3)与普通程序不同,bash程序第一行一般为“#!/bin/bash”,其中#表示注释,!表示shell运行感叹号之后的程序,即bash程序,让bash程序去运行我们写的脚本程序。

4)Shell的主要环境变量:HOME变量和PATH变量,当然还有其他的。

HOME变量时用户保存用户主目录的位置,在/etc/pasmd文件中定义,用户登录终端时的起始路径就为主目录的位置。

在编写shell脚本的时候经常会用到HOME变量。

例如:当前HOME变量设置为/usr/local/games/qq/games,当用户编程要使用这个目录的时候,输入“cat /usr/local/games/qq/games/qq.txt”这样一行长的命令可能比较麻烦,但是,如果用户直接输入“cat $HOME/qq.txt”,这样就会省时省力。

PATH变量是一样的道理。

3、shell的特殊字符1)shell中除了可以使用普通字符外,还可以使用一些特殊的字符,如通配符、引号、注释、管道等,它们各自有自己特定的含义,使用这些特殊的符号可以大大提高编程的效率,提高文件的可执行性。

2)通配符:通配符用于模式匹配,如文件名匹配、路径搜索、字符串查找等。

常用的通配符有:* ? []* 匹配任意字符?匹配一个或多个在它前面的字符[] 匹配括号中的任意一个字符,可用短画线表示范围,如:[a-z]3)双引号除$、反斜杠\及倒引号(`)外,由双引号引起来的字符均作为普通字符对待。

练习:建立一个名为wifi.sh的shell文件如下:运行一下,看效果。

原因自己归纳!4)单引号单引号引起来的一切东西均当做普通字符来对待,一切特殊字符在单引号里面都失去其本来的意义,包括环境变量、转义字符、倒引号、反斜杠等所有。

5)倒引号倒引号引起来的字符串被shell解释为命令行,在执行时shell会先执行该命令,并以它的标准输出结果代替整个倒引号的部分。

如:结果:6)行结束符号“;”在命令行中的命令通常在命令尾部,用一个换行符作为命令的结束,然而bash用“;”作为各个命令之间的分隔符。

按下回车键后,bash将从首行到尾行按顺序执行每一条命令。

分号表示bash 的前一个命令已经结束。

7)输入重定向符“<”8)输出重定向符“>”编写一个shell脚本名为wifi.sh如下:运行的时候将结果重定向到一个全新的文件中(000.c):在000.c文件中结果如下(用vi进入000.c中):也可以用命令查看:如果原来没有000.c这个文件,则系统默认在当前目录下建立新文件。

8)注释符Shell程序中以“#”开头的正文表示为注释。

一般而言,编写shell程序第一行都要使用“#!”作为开头,之后就是所使用的shell的绝对路径,对于bash脚本,第一行一般都是:#!/bin/bash当然还有其他的,需要大家自己去总结了!!!4、shell的算术运算在bash中执行“整数的算术运算”命令是let,其语法格式为:Let 表达式其中表达式为单独的算术表达式,这里的算术表达式同C语言基本类似,也具有语法、优先级等之分,几乎任何整性的运算符它都支持。

但是与其他高级语言不同的是:在bash算术运算中,系统不检查数据额溢出。

5、shell程序位置参数执行shell脚本可以带有实参。

在Linux中,可以使用从命令行中输入实参的方法代替脚本中需要的变量参数,或者传递给函数,因为这类变量与命令行上具体位置的实参相对应,因此称为位置变量。

具体格式为:脚本名 m1 m2 m3 …mn其中实参m1与脚本中的位置变量$1相对应,以此类推。

如图,建立名为wifi.sh的shell脚本:注意输入方式与结果的对应性:这里在命令行中除输入运行此程序的命令“./wifi.sh”外,还要输入位置参数。

6、shell程序流程控制结构1)数值测试2)逻辑运算测试3)if条件控制语句① shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:if 条件命令then条件为真时的命令串else条件为假时的命令串fi②如果有多个判断的情况,可以使用elif,具体格式如下:if 条件命令1then 条件为真时的命令串1elif 条件命令2 条件为真时的命令串2elif 条件命令3 条件为真时的命令串3……else 条件为假时的命令串fi4)case条件选择语句case语句允许进行多重条件的选择,其语法为:case 字符串 in与字符串匹配的字符串1)命令……命令;;与字符串匹配的字符串2)命令……命令;;……与字符串匹配的字符串n)命令……命令;;esac注:其执行过程,用字符串的值依次和字符串1、字符串2……字符串n进行比较,如果与其中任何一个匹配,则执行该匹配字符串后的命令。

如果没有任何的匹配,则不执行任何操作。

5)while和until循环语句在bash的编程中循环语句是必不可少的一部分。

While和until语句是循环语句中经常使用的两种循环方式。

While循环语句的主要格式如下:While 条件do命令done其执行的过程是:先进行条件测试,条件为真则进入循环体(do-done之间的部分),处理相应的命令;当前操作完成,接着判断条件,条件还满足再次进入循环体,以此进行循环,直到测试条件为假时不再进入循环体。

而与while循环基本类似的一个循环命令为until循环,它的格式如下:Until 测试条件do命令done注意:until语句的执行过程同while很相似,until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。

6)for循环语句for循环的一般格式为:for 变量名[in 数值列表]do若干个命令行done注意:变量名可以是用户选择的额任何字符串,如果变量名是temp,则在in之后给出的数值将顺序替换循环命令列表中的$temp。

例如:for number in 1 2 3 4 5 6 7 8 9doecho $numberdone其执行过程为:变量number分别取代后面的值“1 2 3 4 5 6 7 8 9 ”,即第一次赋值1,然后进入循环体打印这个数字1;第二次赋值2,打印2,以此类推;最后以此赋值9,打印完9后结束当前循环。

注意:如果语法格式中省略了in,则变量var的取值将是位置参数,对变量的每一个可能的赋值都将执行do和done之间的命令列表。

7)函数调用语句在shell中定义函数。

Shell中的函数实际上也是由若干条shell命令组成的。

因此它与shell 程序形式上是相似的,不同之处在于,它不是一个单独的进程,而是shell程序的一部分。

Shell中的函数定义很简单,格式如下:function 函数名(){命令}或者函数(){命令}注意1:shell中要求函数定义必须在函数使用之前。

当函数调用时,可以直接使用函数名,不必带圆括号,就像使用命令一样。

Shell脚本与函数见的参数传递可以利用位置参数和变量直接传递,变量的值可以由shell脚本传递给被调用的函数,例如,函数中所用的位置参数$1、$2、$3,对应于函数调用语句中的实参。

注意2:通常在函数的而最后一个命令执行之后,就退出被调用函数,利用return 命令退出函数,其语法格式如下:return nn 就为退出函数的返回值,主函数可使用$?调用其数值。

?表示紧接着的上面的函数。

二、下半部分:shell脚本编写实例下面给出一个综合的shell脚本编写实例来练习我们上面讲述的理论。

【shell脚本】给定一个不大于5位数的正整数,要求通过其编写shell脚本。

1)判断输入的是几位数?2)分别打印出每一位数字;3)如果输入的最后位为偶数,则将当前的目录下所有的以.h为扩展名的而文件删除(假设当前目录中存在.h文件),如果为奇数,判断该输入的数字是否为素数。

4)判断输入的为即为数字,简单的判断方法是,判断输入数的大小,如输入567,则在100~999之间,因此就是3位数,依次类推。

5)判断万位上的数字,只需将输入的数字除以10000后取整即可;判断千位上的数字可将输入数字对10000取余后整除1000;判断百位上数字将输入数字对1000取余后整除100;判断十位上的数字同上;判断个位的数字,只需将此数对10取余即可。

相关文档
最新文档