SHELL

$0
脚本自身名字
$?
返回上一条命令是否执行成功,0为执行成功,非0则为执行失败
$#
位置参数总数
$*
所有的位置参数被看做一个字符串
$@
每个位置参数被看做独立的字符串
$$
当前进程PID
$!
上一条运行后台进程的PID

 

单引号是告诉Shell忽略特殊字符,而双引号则解释特殊符号原有的意义

 

注释

Shell注释,只要在每行前面加个#号

Shell字符串处理之${}

${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有的需求

获取字符串长度

VAR='hello world!'

echo ${#VAR}

字符串切片

格式:

${parameter:offset}

${parameter:offset:length}

截取从offset个字符开始,向后length个字符

替换字符串

格式:${parameter/pattern/string}

将全部world字符串替换为WORLD

echo ${VAR//world/WORLD}

字符串截取

格式:
${parameter#word} # 删除匹配前缀
${parameter##word}
${parameter%word} # 删除匹配后缀
${parameter%%word}
# 去掉左边,最短匹配模式,##最长匹配模式。
% 去掉右边,最短匹配模式,%%最长匹配模式。

 

2.5 变量状态赋值 变量状态赋值 变量状态赋值
${VAR:-string} 如果VAR变量为空则返回string
${VAR:+string} 如果VAR变量不为空则返回string
${VAR:=string} 如果VAR变量为空则重新赋值VAR变量值为string
${VAR:?string} 如果VAR变量为空则将string输出到stderr

 

字符串颜色 字符串颜色
字符串输出颜色,有时候关键地方需要醒目,颜色是最好的方式:
字体颜色
字体背景颜色
显示方式
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色


40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色


0:终端默认设置
1:高亮显示
4:下划线
5:闪烁
7:反白显示
8:隐藏

 

\033[1;31;40m # 1是显示方式,可选。31是字体颜色。40m是字体背景颜色。
\033[0m # 恢复终端默认颜色,即取消颜色设置。

 

条件表达式

[ expression ]

[[ expression ]]

test expression

 

整数比较符

-eq    等于  

-ne    不等于

-gt    大于

-lt     小于

-ge   大于或等于

-le   小于或等于

 

字符串比较符

==   等于

!=   不等于

>   大于

<   小于

>=  大于等于

<=   小于等于

-n    字符串长度不等于0为真

-z    字符串长度等于0为真

str   字符串存在为真

文件测试

-e   文件或目录存在未真

-f   文件存在为真

-d  目录存在未真

-r  有读权限为真

-w  有写权限为真

-x  有执行权限为真

-s  文件存在并且大小大于0为真

 

布尔运算符

!     非关系,条件结果取反

-a    和关系,在[]表达式中使用

-o   或关系,在[]表达式中使用

 

逻辑判断符

&&  逻辑和,在[[]]和(())表达式中或判断式是否为真时拥塞

||      逻辑或,在[[]]和(())表达式中或判断表达式是否为真时使用

 

整数运算

+   加法

-   减法

*   乘法

/   除法

%   取余

 

运算表达式

$((1+1))

$[1+1] 

 

其他运算工具(let/expr/bc)

let    赋值并运算,支持++、---

expr 乘法*需要加反斜杠转义\*      expr 1 \* 2 运算符两边必须有空格
                                                    expr \( 1 + 2 \) \* 2 使用双括号时要转义

bc  计算器,支持浮点运算,平方

 

获取字符串长度: # expr length "string" 6

截取字符串: # expr substr "string" 4 6    ing

获取字符在字符串中出现的位置: # expr index "string" str 1

# expr index "string" i   4

获取字符串开始字符出现的长度: # expr match "string" s.*  6

    # expr match  "string"  3

 

shell括号的用途

( )
用途1:在运算中,先计算小括号里面的内容
用途2:数组
用途3:匹配分组
(( ))
用途1:表达式,不支持-eq这类的运算符。不支持-a和-o,支持<=、>=、<、>这类比较符和&&、||
用途2:C语言风格的for(())表达式
$( )
执行Shell命令,与反撇号等效
$(( ))
用途1:简单算数运算
用途2:支持三目运算符 $(( 表达式?数字:数字 ))
[ ]
条件表达式,里面不支持逻辑判断符
[[ ]]
条件表达式,里面不支持-a和-o,不支持<=和>=比较符,支持-eq、<、>这类比较符。支持=~模式匹配,也可以不用双引号也不会影响原意,比[]更加通用
$[ ]
简单算数运算
{ }
对逗号(,)和点点(...)起作用,比如touch {1,2}创建1和2文件,touch {1..3}创建1、2和3文件
${ }
用途1:引用变量
用途2:字符串处理

数组

array=(元素1 元素2  元素3)

 

array[下标]=元素

获取所有元素

#echo $[array[*]]  #和@代表所有元素

获取元素下标

#echo ${![@]}

获取数组长度

echo ${#array[*]}

获取第一个元素

echo ${array[1]}

添加元素

array[3]=d

添加多个元素

array+=(e f g)

删除第一个元素

unset array[0]

删除数组

unset  array

 

正则表达式

{n}或{n,}                   匹配花括号前面字符至少n个字符

\<                              边界符,匹配字符串开始

\<                              边界符,匹配字符串开始

   [:alnum:]                  等效[a-zA-Z0-9]

 

posted @ 2018-07-06 15:42  X_XiaoHan  阅读(150)  评论(0)    收藏  举报