Shell脚本编程基础知识

合集下载

Linux_shell脚本全面学习

Linux_shell脚本全面学习

dirname file: 返回文件所在路径比如:dirname /bin/tux 将返回 /bin head file: 打印文本文件开头几行 tail file : 打印文本文件末尾几行 sed: Sed 是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并 将结果输出到标准输出(屏幕) 。该命令采用正则表达式(见参考)进行搜索。 不要和 shell 中的通配符相混淆。比如:将 linuxfocus 替换为 LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F 指定 其他分割符。 cat file.txt | awk -F, '{print $1 "," $3 }'这里我们使用,作为字段分割符,同时打印 第一个和第三个字段。如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA 命令输出结果为:Adam Bor, IndiaKerry Miller, USA
2) 概念: 管道, 重定向和 backtick 这些不是系统命令,但是他们真的很重要。 管道 (|) 将一个命令的输出作为另外一个命令的输入。 grep "hello" file.txt | wc -l 在 file.txt 中搜索包含有”hello”的行并计算其行数。 在这里 grep 命令的输出作为 wc 命令的输入。当然您可以使用多个命令。

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文件:

shell编程总结

shell编程总结

shell编程总结

Shell编程是一种基于命令行的脚本编程语言,常用于Linux和Unix系统中。本文将对Shell编程进行总结,包括以下内容:

1. Shell的基础知识:介绍Shell的定义、历史、发展以及Shell 与Linux的关系。

2. Shell脚本的格式:讲解Shell脚本的格式,包括文件头、变量、注释、命令等。

3. Shell命令:介绍常用的Shell命令,如ls、cd、cp、mv、rm、mkdir、cat等。

4. Shell的流程控制:讲解Shell脚本的流程控制语句,包括if语句、for循环、while循环、case语句等。

5. Shell函数:介绍Shell函数的定义、调用和传参等。

6. Shell的文本处理:讲解Shell脚本中的文本处理命令,如grep、sed、awk等。

7. Shell的正则表达式:介绍正则表达式的定义、语法和常用操作符等。

8. Shell的调试和错误处理:讲解Shell脚本的调试方法和错误处理语句,如set -x、set -e等。

9. Shell脚本的实战:通过实际案例介绍如何使用Shell脚本进行系统管理、日志分析、数据处理等。

通过本文的总结,读者可全面了解Shell编程的基础知识和常用技巧,提高Shell编程的能力。

shell脚本编程(基础篇)

shell脚本编程(基础篇)

Shell脚本编程

环境变量中PS1的用法 (3)

XEN虚拟机修改系统时间方法 (4)

定时运行某个程序 (5)

Ps线程管理 (5)

Top 监视系统进程,查看系统的运行情况 (7)

Kill: 结束进程 (7)

其它常用命令 (8)

搜索命令 (11)

VI命令 (12)

压缩命令 (12)

date命令 (13)

export命令 (14)

Expr使用、加减乘除、$字符串的处理 (14)

正则表达式 (17)

LINUX命令后面常见的>/DEV/NULL 和2>&1 的含义 (21)

cut的简单用法 (22)

echo的简单用法 (23)

tr的简单用法 (24)

sort的简单用法 (27)

head,tail的简单用法 (28)

split的简单用法 (29)

Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义 (30)

Linux中单引号和双引号、反引号、小括号,中括号,和大括号的含义 (30)

source FileName的含义 (35)

本地文档的用法 (35)

命令执行顺序 (36)

xargs命令 (39)

常用命令

环境变量中PS1的用法

PS1是很重要的环境变量: PS(Prompt Sign): 是指命令提示符

PS1="[\u@\h \w]\$"当前显示的是全路径

PS1='[\u \w \t]'__ 简洁方式显示

PS1='[\u \w]' 简洁方式显示

再试试这个:

PS1="\#__ \t \w [\u]>" 看起来是不是很舒服,很强悍??

下面是PS1变量中各特殊符号的含义:

1SHELL基础知识

1SHELL基础知识

SHELL

一.什么是Shell脚本?怎样写一个简单的Shell脚本?

shell 脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器。

以上面的程序为例利用vi编辑器编辑脚本,将脚本命名为 date.sh.

Shell脚本不是复杂的程序,它是按行解释的,脚本第一行总是以#!/bin/sh 开头,它通知系统以下的Shell程序使用系统上的Bash来解释。

编写完后给脚本添加执行权限: chmod +x date.sh.

运行脚本:date.sh.

二.Shell中的一些变量

变量一般都用大写字母表示

使用 echo命令可以显示单个变量的取值,要在变量名前面加$

如:USER=“haison”

echo $USER

如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly

使用set命令可以显示所有本地定义的shell变量.

使用unset 变量名可以清除对变量的定义.

位置变量:$0(脚本名),$1-$9:脚本参数。

待定变量:

$# 传递到脚本的参数个数.

$* 传递到脚本的参数,与位置变量不同,此选项参数可超过9个.

$$ 脚本的当前进程号.

$! 后台最后运行的进程号.

$@ 与$#相同,使用时加引号,并在引号中返回参数个数.

$- 上一个命令的最后一个参数.

$? 最后命令的退出状态,0表示没有错误,其他任何值表明有错误.

例子:

给文件var.sh加执行权限:

执行:

三.条件判断

1.文件状态测试

-d目录 -r可读

-f常规文件 -w可写

-L符号连接 -x可执行

-s文件长度大于0,非空 -u文件有suid位设置

Linux上的Shell脚本编程入门

Linux上的Shell脚本编程入门

Linux上的Shell脚本编程入门Shell脚本是一种在Linux操作系统中常用的编程语言,用于自动化

执行一系列命令和操作。通过编写Shell脚本,用户可以简化繁琐的任务,提高工作效率。本文将介绍Linux上的Shell脚本编程入门,帮助

读者快速上手。

一、Shell脚本介绍

Shell脚本是一种文本文件,其中包含一系列命令和控制结构。它以.sh为文件扩展名。Shell脚本可以通过执行文件或者通过解释器直接

运行。常见的Shell解释器有Bash、Ksh和Tcsh等。

二、编写Shell脚本

1. 创建脚本文件

在Linux终端中通过编辑器创建一个新的文本文件,后缀名为.sh,

例如:

```shell

vi myscript.sh

```

2. 添加执行权限

为了让脚本文件可以执行,需要为其添加执行权限,使用以下命令:```shell

chmod +x myscript.sh

```

3. 编写脚本内容

使用文本编辑器打开脚本文件,开始编写Shell脚本。以下是一个简单的示例:

```shell

#!/bin/bash

# 这是一个注释

echo "Hello, World!"

```

以上代码解释如下:

- `#!/bin/bash`:这是一个Shebang行,用于指定脚本所使用的解释器。

- `# 这是一个注释`:以#开头的行是注释,不会被执行。

- `echo "Hello, World!"`:将字符串"Hello, World!"输出到终端。

4. 运行Shell脚本

保存脚本文件后,可以通过以下命令运行Shell脚本:

```shell

Shell脚本基本知识

Shell脚本基本知识

Shell脚本基本知识

概述:shell其实是内核与用户之间的一个接口,

shell脚本

如果有一系列经常使用的linux命令,你可以把它们存储在一个文件肿。shenll可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。

执行shell脚本

要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写他。

为了使用bash shell赖执行脚本magic,其命令是:bash magic或者./magic

echo命令:

echo “this is an example of the echo command!”

屏幕上就会回显“this is an example of the echo command!”

#符号

用于在shell脚本肿可以包含注解入口

echo “hello”

#this is a comment line. this would not produce any output!

echo “world!”

第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息

变量:

可以在任何时间通过简单的赋值来创建。

语法:

-

Linux 中的所有变量都被当作字符串

引用变量:

$符号用于引用一个变量的内容

variable1 = ${variable2}

读入值给变量

在执行shell脚本时,shell还允许用户直接从键盘读入一个值给变量,还可以使用read命令来作。

$read fname

本地和全局shell变量

局部变量

当引用shell时,只有创建它的shell能够知道变量的存在

全局变量

称为子shell

shell脚本教程详细讲解(共80张PPT)

shell脚本教程详细讲解(共80张PPT)
5. 在 vi 中设定一下行号; 6. 移动到第 58 行,向右移动 40 个字符,请问您看到的双引号内是什么
目录? 7. 移动到第一行,并且向下搜寻一下“bzip2”这个字符串,请问他在
第几行?
8. 接着下来,我要将 50 到 100 行之间的 man 改为 MAN,并且一个一
个挑选是否需要修改,如何下达指令?
u:恢复刚才被修改的文本 U:恢复光标所在行的所有修改
.:重复上一次命令的操作
11
命令模式下的操作:文本复制、粘贴
复制命令:y yy: 复制整行 yw:复制光标所在的单词 nyw:复制包括光标所在的n个单词 nyy:复制包括当前行在内的n行
粘贴命令
P
光标移动
h、j、k、l nG:移动到底n行行首
vi –R file_name,以只读方式打开文件
8
3、VI的退出
冒号进命令行模式下:
:q! 不存档强制退出。
:w 保存但不退出,w(rite)后可加所要存档的文档 名。
:wq 存档后退出。
命令模式下按zz,功能与 :wq 相同。
:x 与:wq相同
命令模式:
ZZ、ZQ
保存/不保存退出
9
4、怎么编辑
14
三种模式间的转换关系
文本输入状态
按ESC键
按 A,I,S,C,O 等命令

shell脚本基础知识

shell脚本基础知识

Shell脚本编程的常识

(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用)

七种文件类型

d 目录 l 符号链接

s 套接字文件 b 块设备文件

c 字符设备文件 p 命名管道文件

- 普通文件

正则表达式

从一个文件或命令输出中抽取或过滤文本时。可使用正则表达式(RE),正则表达式是一些特殊或不很特殊的字符串模式的集合。

基本的元字符集:

^ 只匹配行首。

$ 只匹配行尾。

* 一个单字符后紧跟*,匹配0个或多个此单字符。

[] 匹配[]内字符,可以是一个单字符,也可以是字符序列。可以使

用-来表示[]内范围,如[1-5]等价于[1,2,3,4,5]。

\ 屏蔽一个元字符的特殊含义,如\$表示字符$,而不表示匹配行

尾。

. 匹配任意单字符。

pattern\{n\} 匹配pattern出现的次数n

pattern\{n,\}m匹配pattern出现的次数,但表示次数最少为n

pattern\{n,m\} 匹配pattern出现的次数在n与m之间(n,m为0-255)

几个常见的例子:

显示可执行的文件:ls –l | grep …x...x..x

只显示文件夹:ls –l | grep ^d

匹配所有的空行:^$

匹配所有的单词:[A-Z a-z]*

匹配任一非字母型字符:[^A-Z a-z]

包含八个字符的行:^……..$(8个.)

字符类描述

以下是可用字符类的相当完整的列表:

[:alnum:] 字母数字[a-z A-Z 0-9]

[:alpha:] 字母[a-z A-Z]

[:blank:] 空格或制表键

Linux命令高级技巧之shell脚本编程

Linux命令高级技巧之shell脚本编程

Linux命令高级技巧之shell脚本编程在Linux操作系统中,Shell脚本编程是一项非常重要且常用的技能。Shell脚本是由一系列命令组成的程序,能够实现批量处理任务、自动

化操作等功能。本文将介绍一些Linux命令高级技巧,帮助读者更好地掌握Shell脚本编程。

一、Shell脚本的基本语法

Shell脚本主要使用的是Bash Shell,其语法与C语言相似。一个基

本的Shell脚本通常包括以下几部分:

1. Shebang:指定该脚本使用的Shell解释器,通常以`#!`开头,例

如 `#!/bin/bash`。

2. 变量定义:可以使用`=`来给变量赋值,例如 `name="John"`。

3. 输入输出:使用`echo`命令输出内容,使用`read`命令接收用户输入。

4. 条件判断:使用`if-else`语句进行条件判断,例如:

```bash

if [ $num -eq 0 ]; then

echo "Number is zero."

else

echo "Number is not zero."

fi

```

5. 循环结构:使用`for`循环或`while`循环来执行重复操作,例如:

```bash

for i in {1..5}; do

echo "Number: $i"

done

```

二、Shell脚本编程的常用技巧

1. 命令执行结果的保存:可以使用`$()`或````符号将命令的执行结果

保存到变量中,例如:

```bash

result=$(ls -l)

```

2. 向文件添加内容:使用`>>`符号可以向文件末尾添加内容,例如:

shell脚本基础(又长又详细)

shell脚本基础(又长又详细)

shell脚本基础(⼜长⼜详细)

第⼗⼀章 BASH脚本(⼀)

常见的Shell变量的类型包括环境变量、预定义变量、位置变量、⽤户⾃定义变量。本节将分别学习这四种Shell变量的使⽤。

11. 1、 Shell的环境变量

通过set命令可以查看系统中所有Shell变量(包括环境变量和⽤户⾃定义变量),由于内容输出较多,建议使⽤less命令分页查看。

常⽤环境变量:

PATH 决定了shell将到哪些⽬录中寻找命令或程序

HOME 当前⽤户主⽬录

HISTSIZE 历史记录数

LOGNAME 当前⽤户的登录名

USER 当前⽤户名

UID 当前⽤名的UID

HOSTNAME 指主机的名称

SHELL 前⽤户Shell类型

LANGUGE 语⾔相关的环境变量,多语⾔可以修改此环境变量

MAIL 当前⽤户的邮件存放⽬录

PS1 基本提⽰符,对于root⽤户是#,对于普通⽤户是$

PS2 附属提⽰符,默认是“>”

例:以分号分隔,显⽰当前的⽤户的⽤户名、宿主⽬录、登录Shell。

例:查看当前命令的搜索路径,并将/opt/bin⽬录添加到现有搜索路径中去,从⽽可以直接执⾏此⽬录中的命令。

环境变量的配置⽂件

⽤户可在当前的Shell环境中直接为环境变量赋值,但需要长期变更所使⽤的某个环境变量时,可以修改配置⽂件。

在Linux系统中,⽤户环境变量的设置⼯作习惯上在 /etc/profile ⽂件及宿主⽬录中 .bash_profile⽂件中进⾏,前者称为全局配置⽂件(对所有⽤户起作⽤),后者称为⽤户配置⽂件(允许覆盖全局配置)。

shell编程基础知识汇总

shell编程基础知识汇总

1.shell程序的执行

先将shell脚本放置于linux系统任意目录下,最好自己创建一个目录,如然后chmod命令对脚本进行赋予可执行权限。选择./xxx.sh或者bash –x xxx.sh执行shell脚本,后者可以显示每条命令的运行结果,调试脚本时候非常有用。

2.变量

变量名区分大小写,无须声明,可以直接赋值;引用变量需要在变量前面加$符号。注意:直接赋值时变量和=之间不带空格,如'var=100'。

如果需要用变量和其他字符组成新的字符串,可以把变量用{}括起来。变量后还可以加一个参数表示如果变量没有初始化就使用的值.形式是{var:-val},例如:

${varname:=word} 如果varname存在且不为空,则使用varname的值;否则将其值设置为word,并返回其值

${ varname: +message} 如果varname存在且非full,则返回word;否则返回null

对于未赋值的变量,bash会以空值对待,也可以使用unset命令来清除给变量赋的值。

数组形式为:变量名[下标]=值,或者变量名={多个值}。下标可以用字符。

declare或typeset可以使用+/-r选项来设置/撤销变量的只读属性。

export可以把变量输出到环境中,以使其他程序也可以使用。相反,使用local声明的变量是局部变量,仅供在当前函数内使用。

特定shell变量:$0当前命令对应的可执行文件名;$1-$9命令参数;$#参数个数;$*所有参数;$@所有参数,并且每个参数以'括住;$$当前进程ID号;$?最后的命令的退出状态,如果正常退出则返回0,反之为非0值。

shell脚本教程

shell脚本教程

shell脚本教程

Shell脚本是一种计算机编程语言,主要用于在Unix或类Unix 系统上编写脚本程序。它提供了一个交互式的命令行界面,可以执行一系列命令和控制流程,帮助用户自动化和简化重复的任务。下面是一个简要的Shell脚本教程。

Shell脚本通常以.sh作为文件扩展名,可以使用文本编辑器编写。第一行通常是指定解释器,例如#!/bin/bash,表示使用Bash作为解释器。

Shell脚本是按照顺序执行的,可以包含变量、函数、条件语句和循环等。

变量可以用来存储值,以$开头表示引用变量的值,例如$name。可以使用等号将值赋给变量,如name="John"。使用echo命令可以打印变量的值,例如echo $name。

Shell脚本支持各种条件语句,如if、elif和else。条件语句根据条件的真假执行不同的代码块。条件通常使用比较运算符(如等于、不等于、大于、小于等)进行比较,例如if [ $num -eq 10 ]。

Shell脚本还支持循环,如for和while循环。for循环用于遍历一个列表或数组,执行相应的代码块。while循环根据条件的真假重复执行代码块。

除了基本的命令和控制流程,Shell脚本还支持函数的定义和

调用。函数可以封装一段代码,并在需要时进行调用。

Shell脚本还可以通过命令行参数接受用户的输入,如$1表示第一个参数,$2表示第二个参数,依此类推。

Shell脚本还提供了许多内置的命令和变量,用于方便操作和管理系统。例如,cd命令用于切换当前目录,ls命令用于列出目录内容,hostname命令用于查看主机名等。

shell基本语法

shell基本语法

shell基本语法

Shell基本语法

Shell是一种命令行解释器,它是Linux系统中最常用的命令行解释器之一。Shell基本语法是学习Shell编程的基础,本文将介绍Shell基本语法。

1. Shell注释

Shell注释用于在脚本中添加注释,以便于其他人阅读和理解脚本。Shell注释以#开头,直到行末为止。例如:

# This is a comment

2. Shell变量

Shell变量用于存储数据,可以是字符串、数字或其他类型的数据。Shell变量的命名规则与其他编程语言相同,以字母或下划线开头,后面可以跟字母、数字或下划线。变量名区分大小写。例如:

name="John"

age=25

3. Shell字符串

Shell字符串是一串字符,可以是单引号或双引号括起来的任意字符。单引号字符串中的变量不会被解析,而双引号字符串中的变量

会被解析。例如:

name="John"

echo 'My name is $name' # 输出 My name is $name

echo "My name is $name" # 输出 My name is John

4. Shell数组

Shell数组是一组数据,可以是字符串、数字或其他类型的数据。Shell数组的下标从0开始。例如:

names=("John" "Mary" "Tom")

echo ${names[0]} # 输出 John

5. Shell条件语句

Shell条件语句用于根据条件执行不同的命令。Shell条件语句包括if语句、case语句和test命令。例如:

shell编程_第一篇_基础

shell编程_第一篇_基础

shell编程_第⼀篇_基础

shell基础

⼀编程与编程语⾔

Shell是⼀门编程语⾔,作为学习shell的开始,需要事先搞明⽩:编程的⽬的是什么?什么是编程语⾔?什么是编程?

1、编程的⽬的:

计算机的发明,是为了⽤机器取代/解放⼈⼒,⽽编程的⽬的则是将⼈类的思想流程按照某种能够被计算机识别的表达⽅式传递给计算机,从⽽达到让计算机能够像⼈脑/电脑⼀样⾃动执⾏的效果。

2、什么是编程语⾔?

上⾯提及的能够被计算机所识别的表达⽅式即编程语⾔,语⾔是沟通的介质,⽽编程语⾔是程序员与计算机沟通的介质。在编程的世界⾥,计算机更像是⼈的奴⾪,⼈类编程的⽬的就命令奴⾪去⼯作。

3、什么是编程?

编程即程序员根据需求把⾃⼰的思想流程按照某种编程语⾔的语法风格编写下来,产出的结果就是包含⼀堆字符的⽂件。

强调:程序在未运⾏前跟普通⽂件⽆异,只有程序在运⾏时,⽂件内所写的字符才有特定的语法意义

4、什么是程序

编程的结果就是程序,更准确点说,程序就是⼀系列代码⽂件

5、什么是进程

程序运⾏的过程就是进程,或者说是操作系统⼲活的过程,即操作系统拿着硬件去运⾏程序的过程

6、编程的步骤?

1、先把⾃⼰想让计算机做事的步骤想清楚

2、再⽤⼀种计算机可以听懂的语⾔把做事的步骤翻译下来

7、所以我有话对⼤家说

shell是语⾔,⽽学习语⾔的套路都是⼀样的,以英语学习为例,你需要学单词,然后学语法,最后写作⽂。

英语的单词---------->shell中的关键字

英语的语法---------->shell的语法

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

chkperm.sh
#!/bin/bash # Using the old style test command: [ ] # filename: perm_check.sh # file=testing if [ -d $file ] then echo "$file is a directory" elif [ -f $file ] then if [ -r $file -a -w $file -a -x $file ] then # nested if command echo "You have read,write,and execute permission on $file." fi else echo "$file is neither a file nor a directory. " fi
x=1; name=Tom; [ $x -eq 1 –a –n $name ]; echo $? 注:不能随便添加括号 [ ( $x -eq 1 ) –a ( –n $name ) ]; echo $?
X
逻辑测试
可以使用模式的逻辑测试
[[ pattern1 && pattern2 ]] [[ pattern1 || pattern2 ]] [[ ! pattern ]] 逻辑与 逻辑或 逻辑非
echo命令
功能说明:显示文字。 语 法:echo [-ne][字符串] 或 echo [--help][--version] 补充说明:echo会将输入的字符串送往标准输出。 输出的字符串间以空白字符隔开, 并在最后加上 , 换行号。 -n 不进行换行 -e 若字符串中出现以下字符,则特别加以处理,而不 会将它当成一般文字输出 \n 换行 \b 空格 空格...
两种测试方法的区别
使用的操作符不同 let 和 双圆括号中可以使用算术表达式,而中括号不能 let 和 双圆括号中,操作符两边可以不留空格
逻辑测试
逻辑测试
[ expr1 -a expr2 ] 逻辑与,都为真时,结果为真 [ expr1 -o expr2 ] 逻辑或,有一个为真时,结果为真 [ ! expr ] 逻辑非
字符串测试
字符串测试
[ -z str ] [ -n str ] [ str1 = str2 ]
操作符两边必须留空格!
如果字符串 str 长度为 0,返回真 如果字符串 str 长度不为 0,返回真 两字符串相等
[ str1 != str2 ] 两字符串不等
name=Tom; [ -z $name ]; echo $? name2=Andy; [ $name = $name2 ] ; echo $?
测试表达式的值
表达式测试包括字符串测试、整数测试和文件测试。 内置测试命令 test
通常用 test 命令来测试表达式的值 x=5; y=10 test $x -gt $y echo $? test 命令可以用 方括号 来代替 x=5; y=10 [ $x -gt $y ] echo $?
方括号前后要留空格!
参 数:
-n 不要在最后自动换行 -e 若字符串中出现以下字符,则特别加以处理,而不 会将它当成一般文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \\ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符; --help 显示帮助 --version 显示版本信息
测试表达式的值
2.x 版本以上的 Bash 中可以用双方括号 双方括号来测试表达式 双方括号 通配符进行模式匹配 模式匹配。 的值,此时可以使用通配符 通配符 模式匹配 name=Tom [ $name = [Tt]?? ] echo $? [[ $name = [Tt]?? ]] echo $?
整数测试
整数Baidu Nhomakorabea试,即比较大小
[ int1 -eq int2 ] [ int1 -ne int2 ] [ int1 -gt int2 ] [ int1 -ge int2 ] [ int1 -lt int2 ] [ int1 -le int2 ]
操作符两边必须留空格!
int1 等于 int2 int1 不等于 int2 int1 大于 int2 int1 大于或等于 int2 int1 小于 int2 int1 小于或等于 int2
read命令 命令
read variable #读取变量给 读取变量给variable 读取变量给 read x y #可同时读取多个变量 可同时读取多个变量 read #自动读给 自动读给REPLY 自动读给 read –p “Please input: ” #自动读给 自动读给REPLY 自动读给
几点说明
elif 可以有任意多个(0 个或多个) else 最多只能有一个(0 个或 1 个) if 语句必须以 fi 表示结束 expr 通常为条件测试表达式;也可以是多个命令,以最 后一个命令的退出状态为条件值。 commands 为可执行语句块,如果为空,需使用 shell 提供的空命令 “ : ”,即冒号。该命令不做任何事情,只返 回一个退出状态 0 if 语句可以嵌套使用 ex4if.sh,chkperm.sh,chkperm2.sh, , , , name_grep,tellme,tellme2,idcheck.sh , , ,
条件测试
条件测试可以根据某个特定条件是否满足,来选择执行 相应的任务。 Bash 中允许测试两种类型的条件: 命令成功或失败,表达式为真或假 任何一种测试中,都要有退出状态(返回值),退出状态 为 0 表示命令成功或表达式为真,非0 则表示命令失败或表 达式为假。 状态变量 $? 中保存命令退出状态的值 grep $USER /etc/passwd echo $? grep hello /etc/passwd; echo $?
Linux 操作系统
Shell 脚本编程
主要内容和学习要求
掌握创建 shell 脚本的基本步骤 学会使用条件测试 掌握 if 条件结构与 case 选择结构 掌握 for 循环、while 循环和 until 循环结构 学会 shift 命令的使用 学会 shell 脚本的调试
Shell 脚本
Shell 脚本 如果有一系列你经常使用的Linux命令,你可 命令, 如果有一系列你经常使用的 命令 以把它们存储在一个文件里, 以把它们存储在一个文件里,shell可以读取这 可以读取这 个文件并顺序执行其中的命令, 个文件并顺序执行其中的命令,这样的文件被 称为脚本文件。 脚本按行解释 按行解释。 称为脚本文件。shell 脚本按行解释。
x=1; name=Tom; [[ $x -eq 1 && $name = To? ]]; echo $?
文件测试
文件测试:文件是否存在,文件属性,访问权限等。 文件测试:文件是否存在,文件属性,访问权限等。
常见的文件测试操作符
-f fname -L fname -d fname -e fname -s fname -r fname -w fname -x fname fname 存在且是普通文件时,返回真 ( 即返回 0 ) fname 存在且是链接文件时,返回真 fname 存在且是一个目录时,返回真 fname(文件或目录)存在时,返回真 fname 存在且大小大于 0 时,返回真 fname(文件或目录)存在且可读时,返回真 fname(文件或目录)存在且可写时,返回真 fname(文件或目录)存在且可执行时,返回真
Shell 脚本的编写
Shell 脚本是纯文本文件,可以使用任何文本编辑器编写 Shell 脚本通常是以 .sh 作为后缀名
Shell 脚本的执行
chmod +x script_name ./script_name bash script_name
Shell 脚本
Shell 脚本的格式
第一行:指定用哪个程序来编译和执行脚本。 #!/bin/bash #!/bin/sh #!/bin/csh
更多文件测试符参见 test 的在线帮助
man test
检查空值
检查空值
[ "$name" = "" ] [ ! "$name" ] [ "X${name}" != "X" ]
if 条件语句
语法结构
if expr1 then commands1 elif expr2 then commands2 ... ... else commands4 fi # # # # # # # # # # 如果expr1 为真 返回值为 为真(返回值为 返回值为0) 如果 那么 执行语句块 commands1 不真, 若expr1 不真,而expr2 为真 那么 执行语句块 commands2 可以有多个 elif 语句 else 最多只能有一个 执行语句块 commands4 if 语句必须以单词 fi 终止
Shell 脚本举例
#!/bin/bash # This script is to test the usage of read # Scriptname: ex4read.sh echo "=== examples for testing read ===" echo -e "What is your name? \c" read name echo "Hello $name" echo echo -n "Where do you work? " read echo "I guess $REPLY keeps you busy!" echo read -p "Enter your job title: "#自动读给 自动读给REPLY 自动读给 echo "I thought you might be an $REPLY." echo echo "=== End of the script ==="
ex4if.sh
#!/bin/bash # scriptname: ex4if.sh # echo -n "Please input x,y: " read x y echo "x=$x, y=$y" if (( x > y )); then echo "x is larger than y" elif (( x == y)); then echo "x is equal to y" else echo "x is less than y" fi
可执行语句和 shell 控制结构 一个 shell 脚本通常由一组 Linux 命令、shell 命令、 控制结构和注释语句构成。 注释:以 “ # ” 开头,可独占一行,或跟在语句的后面。 在脚本中多写注释语句是一个很好的编程习惯
Shell 脚本举例
#!/bin/bash # This is the first Bash shell program # ScriptName: greetings.sh echo echo –e "Hello $LOGNAME, \c" echo "it's nice talking to you." echo "Your present working directory is:" pwd # Show the name of present directory echo echo –e "The time is `date +%T`!. \nBye" echo bash greetings.sh chmod +x greetings.sh ./greetings
x=1; [ $x -eq 1 ]; echo $? x=a; [ $x -eq 1 ]; echo $?
X
整数测试
整数测试也可以使用 let 命令或双圆括号
相应的操作符为:
只能用于整数测试! 只能用于整数测试!
== 、!= 、> 、>= 、< 、<=
例: x=1; let "$x == 1"; echo $? x=1; (($x+1>= 2 )); echo $?
相关文档
最新文档