Linux之Shellfor循环

Linux之Shellfor循环

@代表所有参数

所以如果后⾯跟上echo $v你会发现他会⼀次显⽰user userdebug eng

$poo -le ${#prodlist[@]} 这句话是说 $poo⼩于等于prodlist中的所有的值是这个意思吗?

1、Shell for循环语法

for 变量 in 列表

do

command1

command2

...

commandN

done

**也可以写成:for var in list; do

- 13.1.1、读取列表中的值

#!/bin/bash

#basic for command

for test in Alabama BOb Tom Console

do

echo The next state is $test

done

执⾏结果:

The next state is Alabama

The next state is BOb

The next state is Tom

The next state is Console

在最后⼀次迭代后,$test变量的值会在shell脚本的剩余部分保持有效。它会⼀直保持最后⼀次迭代的值(除⾮你修改了它)。

- 13.1.2、读取列表中的复杂值

有两种解决办法: *使⽤转义字符(反斜线)来将单引号转移;

*使⽤双引号来定义⽤到单引号的值。

#!/bin/bash

#basic for command

for test in I don\'t think if "this'll" work

do

echo The next state is $test

done

执⾏结果:

The next state is I

The next state is don't

The next state is think

The next state is if

The next state is this'll

The next state is work

*记住,for命令⽤空格来划分列表中的每个值。如果在单独的数据值中有空格,就必须⽤双引号将这些值圈起来。

-

13.1.3、从变量读取列表

将⼀系列的值都集中存储在⼀个变量中,然后需要遍历变量中的整个列表。

#!/bin/bash

#using a variable to hold the listlist="Alabama BOb Tom Console"

#向已有列表中添加或拼接⼀个值

list=$list" success"

for state in $list

do

echo "this word is $state"

done

执⾏结果:

this word is Alabama

this word is BOb

this word is Tom

this word is Console

this word is success

-

13.1.4、从命令读取值

有两种⽅式可以将命令输出赋值给变量:

(1)反引号字符(`)

(2)$()格式

例如:

test=`date`

test=$(date)

⽣成列表中所需值就是使⽤命令的输出。

#!/bin/bash

# reading values from a file

file="states"

#for state in `ps -ef | grep 'tomcat.8701' | awk '{print $2}'`

for state in $(cat $file)

do

echo "visit beautiful $state"

done

states⽂件内容;

Alabama BOb

Tom Console

执⾏结果:

visit beautiful Alabama

visit beautiful BOb

visit beautiful Tom

visit beautiful Console

- 13.1.5、更改字段分隔符

造成这个问题的原因是特殊的环境变量IFS,叫作内部字段分隔符。默认情况下,bash shell会将下列字符当作字段分隔符: *空格

*制表符

*换⾏符

如果bash shell在数据中看到这些字符中的任意⼀个,它就会假定这表明了列表中⼀个新数据字段的开始。

想修改IFS的值,使其只能识别换⾏符,那就必须:

IFS=$'\n'

将这个语句加⼊到脚本中,告诉bash shell在数据值中忽略空格和制表符。

#!/bin/bash

# reading values from a file

file="states"

IFS=$'\n'

for state in $(cat $file)

do

echo "visit beautiful $state"

done执⾏结果:

visit beautiful Alabama BOb

visit beautiful Tom Console

⼀个可参考的安全实践是在改变IFS之前保存原来的IFS值,之后再恢复它。

实现:

IFS.OLD=$IFS

IFS=$'\n'

IFS=$IFS.OLD

这就保证了在脚本的后续操作中使⽤的是IFS的默认值。

遍历⼀个⽂件中⽤冒号分隔的值:

IFS=:

如果要指定多个IFS字符,只要将它们在赋值⾏串起来就⾏。

IFS=$'\n':;"

这个赋值会将换⾏符、冒号、分号和双引号作为字段分隔符。如何使⽤IFS字符解析数据没有任何限制。

13.1.6、⽤通配符读取⽬录

for file in /proc/*;

do

echo $file is file path \! ;

done

- 13.2、类C风格for循环的语法格式

for((expr1; expr2; expr3))

do

command

command

...

done

有些部分并没有遵循bash shell标准的for命令: *变量赋值可以有空格

*条件中的变量不以美元符开头

*迭代过程的算式为⽤expr命令格式

ex9、输出前5个正数

#!/bin/bash

#使⽤类C风格for循环输出1~5

for ((integer = 1; integer <= 5; integer++))

do

echo "$integer"

done

[zhangqi@localhost shellscript]$ sh for_ex9.sh

尽管可以使⽤多个变量,但你只能在for循环中定义⼀种条件。

#!/bin/bash

for ((a=1,b=10;a<=10;a++,b--))

do

echo "$a - $b"

done

执⾏结果:

1 - 10

使⽤类C风格for循环要注意以下事项: a.如果循环条件最初的退出状态为⾮0,则不会执⾏循环体

b.当执⾏更新语句时,如果循环条件的退出状态永远为0,则for循环将永远执⾏下去,从⽽产⽣死循环

c.Linux shell中不运⾏使⽤⾮整数类型的数作为循环变量

d.如果循环体中的循环条件被忽略,则默认的退出状态为0

e.在类C风格的for循环中,可以将三个语句全部忽略掉,下⾯是合法的for循环for((; ; ))

do

echo "hello world"

done

---------------------

第⼀类:数字性循环-->seq在in后⾯的应⽤

#!/bin/bash

#也是产⽣等差数列-->默认是1

for i in $(seq 1 10) #产⽣的是⼀个字符串,默认IFS是以空格隔开!

do

echo $(expr $i \* 3 + 1); #主要是复习:expr乘法的特殊⽤法!-->空格隔开

done

补充:产⽣[1,10]的⾃然数-->{}在in后⾯的应⽤

total=0 #全局变量

for i in {1..100} #".."表⽰连续,默认也是IFS为空格隔开

do

((total+=i))

done

echo -e "total is:${total}"

#多⾏注释

<

for i in mysql_{0,1,4,12}sql #多个⽂件

do

echo $i

samtools view -c $i

done

COMMENT

第⼆类:字符性循环

最原始的

#!/bin/bash

#使⽤列表for循环显⽰周⼀到周⽇对应的英⽂-->学习⽇期的英⽂

for day in Monday Tuesday Wednesday Thursday Friday Saturday Sunday

do

echo "$day"

done

变量的类型

#!/bin/bash

list="Linux Java C++ Python"

for i in $list

do

echo -e "Language is ${i}"

done

cat在in后⾯的应⽤-->逐⾏读取⽂件的内容(默认是IFS),所以不是逐⾏打印!

#!/bin/bash

for i in $(cat ⽇志颜⾊.sh) #注意:pwd当前⽬录下的⽂件

do

echo $i

done

思考:如果想逐⾏原样输出!

#!/bin/bash

# reading content from a file

file="⽇志⽂件.sh"

#将这个语句加⼊到脚本中,告诉bash shell在数据值中忽略空格和制表,使其只能识别换⾏符!

IFS=$'\n'

for std in $(cat $file)

do

echo "$std"

done

说明:IFS的⼀些说明!

bash shell会将下列字符当作字段分隔符:空格、制表符、换⾏符

合集下载

Linux三剑客awk、grep、sed详解

Linux三剑客awk、grep、sed详解

Linux三剑客awk、grep、sed详解

⼀、前⾔

linux 有很多⼯具可以做⽂本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, head, tail.....,学习 linux ⽂本处

理的懒惰⽅式(不是最好的⽅法)可能是:只学习grep,sed和awk。 使⽤这三个⼯具,你可以解决近 99% linux 系统的⽂本处理问题,⽽

不需要记住上⾯不同的命令和参数。:)

⽽且,如果你已经学会并使⽤了三者,你就会知道其中的差异。实际上,这⾥的差异意味着哪个⼯具擅长解决什么样的问题。

⼀种更懒惰的⽅式可能是学习脚本语⾔(python,perl或ruby)并使⽤它进⾏每个⽂本处理。

⼆、概述

awk、grep、sed 是 linux 操作⽂本的三⼤利器,也是必须掌握的 linux 命令之⼀。三者的功能都是处理⽂本,但侧重点各不相同,其中属

awk 功能最强⼤,但也最复杂。grep 更适合单纯地查找或匹配⽂本,sed 更适合编辑匹配到的⽂本,awk 更适合格式化⽂本,对⽂本进⾏较

复杂格式处理。简单概括:

grep:数据查找定位

awk:数据切⽚

sed:数据修改

三、grep = global regular expression print

⽤最简单术语来说,grep(全局正则表达式打印)--命令⽤于查找⽂件⾥符合条件的字符串。 从⽂件的第⼀⾏开始,grep 将⼀⾏复制到 buffer

中,将其与搜索字符串进⾏⽐较,如果⽐较通过,则将该⾏打印到屏幕上。grep将重复这个过程,直到⽂件搜索所有⾏。

注意这⾥没有进程执⾏ grep 存储⾏、更改⾏或仅搜索部分⾏。

1、⽰例数据⽂件

请将以下数据剪切粘贴到⼀个名为 “sampler.log” 的⽂件中:

boot

book

booze

machine

boots

bungie

bark

aardvark

Linux之BASH和SHELL学习总结

Linux之BASH和SHELL学习总结

Bourne Again SHell (简称 bash)

功能:

1、命令编修能力 .bash_history文件

2、命令与档案补全能力 Tab键

[Tab] 接在一串指令的第一个字的后面,则为命令补全;

[Tab] 接在一串指令的第二个字以后时,则为『档案补齐』!

3、命令别名设定,指令: alias ---alias lm='ls -al',在.bash_profile文件里

4、工作控制、前景背景控制: (job control, foreground, background)-----------------------???????????不懂

5、程序化脚本: (shell scripts)

6、通配符(Wildcard)

bash内建命令 type type [-tpa] name,产看命令是否是bash内建命令,还是外部命令。

命令多行输入 反斜杠'\' 然后紧接回车。

变量取用 echo $variable

变量设定规则

1、等号连接,等号两边没有空格;

2、变量名只能是字母和数字,变量名开头不能为数字;

3、发量内容若有空格符可使用双引号『"』或单引号『'』将发量内容结合起来,但

双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示: 『var="lang is $LANG"』则『echo $var』可得『lang is en_US』 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示: 『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』;

4.可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符;

5、在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号『`指令`』或 『$(指令)』。

51CTO学院Linux编程视频课程Shell从入门到精通(完整版)

51CTO学院Linux编程视频课程Shell从入门到精通(完整版)

Linux编程视频课程Shell从入门到精通(完整版)

课程目标

咱们能够通过本次系列的编程技术学习,把握企业里面的运维编程必备脚本,同时把握企业运维到底要求会什么东西,有哪些是咱们必需要把握的知识。

适用人群

适合有linux基础知识,想进一步学好linux的列位同窗,我也会跟大伙儿一路尽力,分享、感恩、成长!

课程简介

【Linux编程视频课程Shell从入门到精通(完整版)】

课程目标:

本套课程适用于初学者和各类运维人员,咱们能够通过本次系列的编程技术学习,把握企业里面的运维编程必备脚本,同时把握企业运维到底要求会什么东西,有哪些是咱们必需要把握的知识,为咱们的运维能力保驾护航、增值加薪,让咱们的运维加倍容易,真正做到懒人运维,而不是天天苦逼的搬效劳器,天天无奈的去救火!

适合对象:

适合有linux基础知识,想进一步学好linux的列位同窗,我也会跟大伙儿一路尽力,分享、感恩、成长!

学习条件:

需要有耐心、对自己负责,对自己的人一辈子负责,选择了决定以后,选择了就全力以赴去行动,相信结果值得拥有!

学习宣言: 让咱们乘着Linux的大船,奔向咱们以后的方向!期待和祝愿同窗们每一个人都有好的收成,天天都有新的起点!人人都能学会咱们的linux下Shell编程。

课程

1

Linux下Shell编程基础入门

[免费观看]

14分钟

说到Shell编程,我想很多从事Linux运维工作的朋友都不陌生,都对Shell有大体的了解,可能大伙儿刚开始接触Shell的时候,有各类方式? 能不能不学? 高大上? 究竟是浮云?仍是神马? 很难啊? 我想告知大伙儿的是,大伙儿有这些方式一点都不感觉惊讶,什么缘故?这些都很正常,关于任何一件情形在未开始之前,确信会有总总假设,那我今天想说的是,学完人人都会Shell编程后,咱们会感觉一切的Shell都是浮云,咱们每一个人都能专门好的利用它,驾驭它,更好的完成咱们日常运维的工作。 曾经有人说过,玩Linux不明白Shell,那确实是不懂Linux;此刻细细体味确实是如此。为了让更多的人能接触Shell、了解Shell,利用Shell,因此今天开设了如此一个网络课程,让咱们的Shell飞起来。

linux csh while 循环语句

linux csh while 循环语句

在 Linux 中,csh 是一个流行的 shell,但与 bash、sh、ksh 等其他 shell 相比,csh 的语法有所不同。在 csh 中,你不能直接使用 while 循环,但你可以使用 foreach 循环结构来实现类似的功能。

以下是一个如何在 csh 中使用 foreach 循环的示例,该循环的行为类似于 while 循环:

csh复制代码

#!/bin/csh

set counter = 1

foreach i (1 2 3 4 5) # 这将循环5次,类似于while(counter <= 5)

echo "Counter: $counter, Value: $i"

set counter = `expr $counter + 1`

end

在上面的示例中,我们使用 foreach 循环来迭代数字 1 到 5。每次迭代时,我们打印当前的计数器和值,并递增计数器。这相当于以下的 while 循环:

csh复制代码

#!/bin/csh

set counter = 1

while ($counter <= 5)

echo "Counter: $counter, Value: $counter"

set counter = `expr $counter + 1`

end

请注意,虽然 csh 的语法与 bash 或其他流行的 shell 有所不同,但它们的核心概念是相似的。如果你习惯于使用其他 shell,可能需要一些时间来适应 csh 的语法。

Linux张同光版课后习题答案

Linux张同光版课后习题答案

1

1.填空题

(1)GNU的含义是(国际性的源代码开放)。

(2)Linux的版本号分为:(内核版本)和(发行版本)。

(3)安装Linux时最少需要三个个分区,分别是(boot分区)和(根分区)和(swap分区)。

(4)Linux默认的系统管理员帐号是(root)。

(5)如果Linux启动后进入命令行模式,要进入GUI,可执行(init5)命令。

(6)RHEL6.2默认的系统引导工具是(GRUB)。

(7)GRUB的用户界面有三种:(菜单模式)、(菜单编辑模式)和(命令行模式)。

(8)GRUB的默认菜单文件menu.lst其实是(grub.conf)文件的符号链接。

(9)硬盘的第0柱,第0面,第1扇区,这个扇区叫做(MBR)。

(10)MBR由三部分组成:(主引导程序)、(硬盘分区表DPT)和(硬盘有效标志)。

(11)内核的分类:(单片型内核)、(模块型内核)。

(12)(初始化内存映像盘)称为初始化内存盘,为系统提供一系列内核映像无法提供的模块,这些模块对正确引导系统非常重要。

(13)在内核加载完毕、进行完硬件检测与驱动程序加载后,此时主机硬件已经准备就绪了,这时候内核会启动一号进程(/sbin/init)。

(14)RHEL6系统上,文件(etc/inittab)只能设置运行级别。

(15)(etc/rc.d/init.d)文件是在系统启动最后一个被读取的用户自定义启动脚本文件。

(16)操作系统为用户提供了两种接口,分别是(命令界面)和(程序界面)。

(17)命令接口演化为两种主要形式,分别是(命令行界面)和(图形用户界面)。

(18)Linux中的两个主要的桌面环境是(KDE)和(GNOME)。

(19)输入重定向符是(<)。

(20)输出重定向符是(>)和(>>)。

(21)错误输出重定向符是(2>)和(2>>)。

(22)管道符是(|)。

(23)Vim拥有5种编辑模式:(命令模式)、(输入模式)、(末行模式)、(可视化模式)和(查询模式)。

Linux与Unixshell编程指南(完整高清版).pdf

Linux与Unixshell编程指南(完整高清版).pdf

Linux与Unixshell编程指南(完整⾼清版).pdf

找到⼀本很详细的Linux Shell脚本教程,其实⾥⾯不光讲了Shell脚本编程,还介绍了系统的各种命令

本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的⽂字处理以及少量的系统管理问题。本书内容全

⾯、⽂字简洁流畅,适合Shell编程⼈员学习、参考。

⽬ 录

译者序

前⾔

第⼀部分 shell

第1章 ⽂件安全与权限 11.1 ⽂件 1

1.2 ⽂件类型 2

1.3 权限 2

1.4 改变权限位 4

1.4.1 符号模式 4

1.4.2 chmod命令举例 5

1.4.3 绝对模式 5

1.4.4 chmod命令的其他例⼦ 6

1.4.5 可以选择使⽤符号模式或绝对模式 7

1.5 ⽬录 7

1.6 suid/guid 7

1.6.1 为什么要使⽤suid/guid 8

1.6.2 设置suid/guid的例⼦ 8

1.7 chown和chgrp 9

1.7.1 chown举例 9

1.7.2 chgrp举例 9

1.7.3 找出你所属于的⽤户组 9

1.7.4 找出其他⽤户所属于的组 10

1.8 umask 10

1.8.1 如何计算umask值 10

1.8.2 常⽤的umask值 11

1.9 符号链接 12

1.9.1 使⽤软链接来保存⽂件的多个映像 12

1.9.2 符号链接举例 12

1.10 ⼩结 13

第2章 使⽤find和xargs 142.1 find命令选项 14

2.1.1 使⽤name选项 15

2.1.2 使⽤perm选项 16

2.1.3 忽略某个⽬录 16

2.1.4 使⽤user和nouser选项 16

2.1.5 使⽤group和nogroup选项 16

2.1.6 按照更改时间查找⽂件 17

2.1.7 查找⽐某个⽂件新或旧的⽂件 17

2.1.8 使⽤type选项 17

2.1.9 使⽤size选项 18

2.1.10 使⽤depth选项 18

《Linux操作系统(第2版))》课后习题答案

《 Linux 操作系统(第 2 版)》课后习题答案

1.6 练习题

一、选择题

1. Linux 最早是由计算机爱好者 B 开发的。

A. Richard PetersenB. Linus Torvalds C. Rob Pick D. Linux Sarwar

2. 下列 C 是自由软件。

A. Windows XP B. UNIX C. Linux D. Windows 2000

3. 下列 B 不是 Linux 的特点。

A. 多任务 B. 单用户 C. 设备独立性 D. 开放性

4. Linux 的内核版本 2.3.20 是 A 的版本。

A. 不稳定 B. 稳定的 C. 第三次修订 D. 第二次修订

5. Linux 安装过程中的硬盘分区工具是 D 。

A. PQmagic B. FDISK C. FIPS D. Disk Druid

6. Linux 的根分区系统类型是 C 。

A. FATl6 B. FAT32 C. ext4 D. NTFS

二、填空题

1. GNU 的含义是: GNU's Not UNIX 。

2. Linux 一般有 3 个主要部分:内核( kernel)、命令解释层( Shell 或其他操作环境) 、

实用工具。

3. 安装 Linux 最少需要两个分区,分别是 swap 交换分区和 /(根)分区 。

4. Linux 默认的系统管理员账号是root 。

三、简答题 (略)

1.简述 Red Hat Linux 系统的特点,简述一些较为知名的 Linux 发行版本。 2.Linux 有哪些安装方式 ?安装 Red Hat Linux 系统要做哪些准备工作 ?

3.安装 Red Hat Linux 系统的基本磁盘分区有哪些 ?

4.Red Hat Linux 系统支持的文件类型有哪些?

linux shell中sleep的用法

linux shell中sleep的用法

关于Linux shell中的sleep命令,下面是一个详细的回答。

一、什么是sleep命令?

Sleep命令是Linux shell中的一条时间控制命令,用于在脚本中暂停一段时间。它可以根据指定的时间长度阻止进程继续执行,等待一段时间后再继续执行后续命令。可以认为,sleep命令是一种实现延时操作的方法。

二、sleep命令的基本语法

Sleep命令的基本语法如下:

sleep NUMBER[SUFFIX]

其中,NUMBER表示需要延时的时间段,可以是一个整数或者浮点数,单位是秒。SUFFIX是可选的后缀,可以为"s"、"m"、"h"、"d",分别表示秒、分钟、小时和天。

在实际使用中,一般直接使用整数值就足够了。例如,sleep 5表示创建一个暂停执行的进程,持续5秒钟。

三、使用示例

我们来看几个简单的使用示例,以更好地理解sleep命令的实际用途。

示例1:延时执行命令

假设我们需要在脚本中执行两个命令,但需要给它们之间留出一些时间。我们可以使用sleep命令来实现延时效果。以下是一个示例脚本:

#!/bin/bash

echo "开始执行第一个命令"

sleep 5

echo "开始执行第二个命令"

这个脚本中,第一个echo命令会立即执行,然后使用sleep命令延时5秒钟,最后再执行第二个echo命令。

示例2:循环延时

有时候我们可能需要在脚本中加入一些循环,然后在每次循环之间停顿一段时间。以下是一个示例脚本:

#!/bin/bash

for i in {1..5}

do

echo "循环中的第 i 次操作"

sleep 1

done

这个脚本中,使用for循环执行了5次操作,并在每次循环中使用sleep命令停顿1秒钟。

四、注意事项

在使用sleep命令时,还需要注意以下几点:

1. sleep命令的时间参数可以是小数或者整数。例如,sleep 3.5 表示延时3.5秒。

Linux Bash Shell入门教程

BASH 的基本语法

 最简单的例子 —— Hello World!

 关于输入、输出和错误输出

 BASH 中对变量的规定(与 C 语言的异同)

 BASH 中的基本流程控制语法

 函数的使用

2.1 最简单的例子 —— Hello World!

几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH。

用 vi 编辑器编辑一个 hello 文件如下:

#!/bin/bash

# This is a very simple example

echo Hello World

这样最简单的一个 BASH 程序就编写完了。这里有几个问题需要说明一下:

一,第一行的 #! 是什么意思

二,第一行的 /bin/bash 又是什么意思

三,第二行是注释吗

四,echo 语句

五,如何执行该程序

#! 是说明 hello 这个文件的类型的,有点类似于 Windows 系统下用不同文件后缀来表示不同文件类型的意思(但不相同)。Linux 系统根据 "#!" 及该字串后面的信息确定该文件的类型,关于这一问题同学们回去以后可以通过 "man magic"命令 及 /usr/share/magic 文件来了解这方面的更多内容。在 BASH 中 第一行的 "#!" 及后面的 "/bin/bash" 就表明该文件是一个 BASH 程序,需要由 /bin 目录下的 bash 程序来解释执行。BASH 这个程序一般是存放在 /bin 目录下,如果你的 Linux 系统比较特别,bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 这样的目录下;如果还找不到,你可以用 "locate bash" "find / -name bash 2> /dev/null" 或 "whereis bash" 这三个命令找出 bash 所在的位置;如果仍然找不到,那你可能需要自己动手安装一个 BASH 软件包了。

Shell 脚本基础学习笔记

Shell 脚本基础学习笔记 版本历史 详细内容 时间 修订者

V1 新建 2010 hxghan@

shell脚本的解释用“#”号,本文档为了习惯方便,解释大都用“//”,也有用“#”的

SHELL 最基本的语法 shell内部变量

$# 将存放命令行传入的所有参数

$* 所有的命令行参数。

“$*”表示shell文件的所有参数及其空格连在一起作

为单个词处理;

$@ 同上,稍有区别。

“$@”与shell文件接收的参数等价,参数中的空格

被忽略,其结果是等同于原来参数的一个单词列表

$- Shell的选择项

$? 上次执行命令返回值

$$ Shell的进程标识符

$! 用&启动的最后一个命令的进程标识符

$IFS 参数分割词的字符表

$MAIL 信件文件,当其改变时给出信息you have mail

$PATH 搜索命令的目录表

$PS1 提示符串,缺省为$

$PS2 后继命令行提示符,缺省为>

逻辑表达式

s1 = s2 若字符串 s1等s2一样

s1 != s2 若字符串 s1 不等于 s2 则运算结果为真

-n s1 若字符串s1不为零则为真

-z s1 字符串s1空为真

数值比较运算符

d1 lt d2 若d1小于d2则运算结果为真,否则为假

d1 le d2 若d1小于或等于d2则运算结果为真,否则为假

d1 eq d2 若d1等于d2则结果为真否则为假

d1 ge d2 若d1大于或等于d2则运算结果为真,否则为假

d1 gt d2 若d1大于 d2则运算结果为真,否则为假

文件判断运算符

-b fname 若fname存在且为块设备则结果为真,否则为假

-c fname 若fname存在且为字符文件,则结果为真否则为假 -d fname 若fname存在且是一个目录则结果为真,否则为假

-f fname 若fname存在且是一个普通文件则结果为真否则为

-h fname 若fname存在且为一个隐含文件,则结果为真,否则为

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