`

Shell 编程常用知识点 [备忘]

 
阅读更多

特殊的shell变量

变量

含义

$0

脚本名字

$1

位置参数 #1

$2 - $9

位置参数 #2 - #9

${10}

位置参数 #10

$#

位置参数的个数

"$*"

所有的位置参数(作为单个字符串) *

"$@"

所有的位置参数(每个都作为独立的字符串)

${#*}

传递到脚本中的命令行参数的个数

${#@}

传递到脚本中的命令行参数的个数

$?

返回值

$$

脚本的进程ID(PID)

$-

传递到脚本中的标志(使用set)

$_

之前命令的最后一个参数

$!

运行在后台的最后一个作业的进程ID(PID)

测试操作: 二元比较

操作

描述

-----

操作

描述

         

算术比较

   

字符串比较

 

-eq

等于

 

=

等于

-ne

不等于

 

==

等于

-lt

小于

 

!=

不等于

-le

小于等于

 

\<

小于 (ASCII) *

-gt

大于

 

\>

大于 (ASCII) *

-ge

大于等于

 

-z

字符串为空

算术比较

双括号(( ... ))结构

 

-n

字符串不为空

大于

     

>=

大于等于

     

小于

     

<=

小于等于

 

 

 

文件类型的测试操作

操作

测试条件

-----

操作

测试条件

-e

文件是否存在

 

-s

文件大小不为0

-f

是一个标准文件

 

-r

文件具有权限

-d

是一个目录

 

-w

文件具有权限

-h

文件是一个符号链接

 

-x

文件具有执行权限

-L

文件是一个符号链接

     

-b

文件是一个块设备

 

-g

设置了sgid标记

-c

文件是一个字符设备

 

-u

设置了suid标记

-p

文件是一个管道

 

-k

设置了"粘贴位"

-S

文件是一个socket

 

F1 -nt F2

文件F1比文件F2 *

-t

文件与一个终端相关联

 

F1 -ot F2

文件F1比文件F2 *

-N

从这个文件最后一次被读取之后, 它被修改过

 

F1 -ef F2

文件F1和文件F2都是同一个文件的硬链接 *

-O

这个文件的宿主是你

 

 

 

-G

文件的组id与你所属的组相同

 

 

 

!

"" (反转上边的测试结果)

 

 

 

 

参数替换和扩展

表达式

含义

${var}

变量var的值, $var相同

   

${var-DEFAULT}

如果var没有被声明, 那么就以$DEFAULT作为其值 *

${var:-DEFAULT}

如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *

${var=DEFAULT}

如果var没有被声明, 那么就以$DEFAULT作为其值 *

${var:=DEFAULT}

如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *

   

${var+OTHER}

如果var声明了, 那么其值就是$OTHER, 否则就为null字符串

${var:+OTHER}

如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串

   

${var?ERR_MSG}

如果var没被声明, 那么就打印$ERR_MSG *

${var:?ERR_MSG}

如果var没被设置, 那么就打印$ERR_MSG *

${!varprefix*}

匹配之前所有以varprefix开头进行声明的变量

${!varprefix@}

匹配之前所有以varprefix开头进行声明的变量

 

* 当然, 如果变量var已经被设置的话, 那么其值就是$var.


字符串操作

表达式

含义

${#string}

$string的长度

${string:position}

$string, 从位置$position开始提取子串

${string:position:length}

$string, 从位置$position开始提取长度为$length的子串

${string#substring}

从变量$string的开头, 删除最短匹配$substring的子串

${string##substring}

从变量$string的开头, 删除最长匹配$substring的子串

${string%substring}

从变量$string的结尾, 删除最短匹配$substring的子串

${string%%substring}

从变量$string的结尾, 删除最长匹配$substring的子串

${string/substring/replacement}

使用$replacement, 来代替第一个匹配的$substring

${string//substring/replacement}

使用$replacement, 代替所有匹配的$substring

${string/#substring/replacement}

如果$string前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

${string/%substring/replacement}

如果$string后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

expr match "$string" '$substring'

匹配$string开头的$substring*的长度

expr "$string" : '$substring'

匹配$string开头的$substring*的长度

expr index "$string" $substring

$string中匹配到的$substring的第一个字符出现的位置

expr substr $string $position $length

$string中从位置$position开始提取长度为$length的子串

expr match "$string" '\($substring\)'

$string的开头位置提取$substring*

expr "$string" : '\($substring\)'

$string的开头位置提取$substring*

expr match "$string" '.*\($substring\)'

$string的结尾提取$substring*

expr "$string" : '.*\($substring\)'

$string的结尾提取$substring*

* $substring是一个正则表达式.


一些结构的汇总

表达式

解释

中括号

 

if [ CONDITION ]

测试结构

if [[ CONDITION ]]

扩展的测试结构

Array[1]=element1

数组初始化

[a-z]

正则表达式的字符范围

大括号

 

${variable}

参数替换

${!variable}

间接变量引用

{ command1; command2; . . . commandN; }

代码块

{string1,string2,string3,...}

大括号扩展

圆括号

 

( command1; command2 )

子shell中执行的命令组

Array=(element1 element2 element3)

数组初始化

result=$(COMMAND)

在子shell中执行命令, 并将结果赋值给变量

>(COMMAND)

进程替换

<(COMMAND)

进程替换

双圆括号

 

(( var = 78 ))

整型运算

var=$(( 20 + 5 ))

整型运算, 并将结果赋值给变量

引号

 

"$variable"

""引用

'string'

""引用

后置引用

 

result=`COMMAND`

在子shell中运行命令, 并将结果赋值给变量

 

分享到:
评论

相关推荐

    shell编程指南shell编程指南shell编程指南shell编程指南

    shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南

    SHELL编程常用手册

    常用shell的用法,非常方便阅读shell脚本。

    shell编程教程.chm

    shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-shell编程-循环语句(2) Linux的shell编程(一) Linux的shell编程(二) Linux的...

    shell课件编程知识

    运维第一工具-shell编程,包含shell基本语法及常用shell 命令。

    shell 编程shell 编程

    shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    shell编程shell编程shell编程shell编程

    shell编程shell编程shell编程shell编程

    linux 下Shell编程各个知识点举例

    基本包含了Linux下Shell编程开发基础知识点相关练习代码,包含 awk.sh for.sh ip-get.sh read.sh tmp.sh calc.sh func.sh login.sh select.sh var.sh case.sh guess_data.sh nfs_install.sh shell-base.sh while.sh ...

    linux的常用命令及shell编程

    这是一款linux的常用命令及shell编程

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    shell编程题目练习

    shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    LINUX与UNIX SHELL编程指南

    LINUX与UNIX SHELL编程指南

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程

    Linux操作系统Shell编程

    经典Linux和unix的Shell编程,按照模板练习即可快速提高。

    shell编程个人笔记

    shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人...

    Unix Shell Shell编程

    6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书

    shell 编程指南pdf

    第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...

    Shell编程

    Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程

    Linux与Unix shell编程指南(完整高清版)

    Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux...

Global site tag (gtag.js) - Google Analytics