Linux脚本总结,Linux shell 脚本总结

在中括号中,判断变量的值, 加不加双引号的问题?

-z 判断 变量的值,是否为空; zero = 0

- 变量的值,为空,返回0,为true

- 变量的值,非空,返回1,为false

-n 判断变量的值,是否为空 name = 名字

- 变量的值,为空,返回1,为false

- 变量的值,非空,返回0,为true

[ -z "$pid" ] 单对中括号变量必须要加双引号

[[ -z $pid ]] 双对括号,变量不用加双引号

[ ] 可以使用 -a -o的参数,但是必须在 [ ] 中括号内,判断条件,例如:

[ 5 -lt 3 -o 3 -gt 2 ] 或者条件成立

如果想在中括号外判断两个条件,必须用&& 和 || 比较

[5 -lt 3 ] || [ 3 -gt 2]

[5 -gt 3 ] && [ 3 -gt 2] 成立

当判断某个变量的值是否满足正则表达式的时候,必须使用[[ ]] 双对中括号

条件表达式

文件表达式

if [ -f  file ]    如果文件存在

if [ -d ...   ]    如果目录存在

if [ -s file  ]    如果文件存在且非空

if [ -r file  ]    如果文件存在且可读

if [ -w file  ]    如果文件存在且可写

if [ -x file  ]    如果文件存在且可执行

整数变量表达式

if [ int1 -eq int2 ]    如果int1等于int2

if [ int1 -ne int2 ]    如果不等于

if [ int1 -ge int2 ]       如果>=

if [ int1 -gt int2 ]       如果>

if [ int1 -le int2 ]       如果<=

if [ int1 -lt int2 ]       如果<

字符串变量表达式

),返回0(true)

if  [ -z $string  ]             如果string 为空

if  [ $sting ]                  如果string 非空,返回0 (和-n类似)

shell脚本字符串截取的8种方法

假设有变量 var=http://www.aaa.com/123.htm.

1. # 号截取,删除左边字符,保留右边字符。

1

echo ${var#*//}

其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

即删除 http://

结果是:www.aaa.com/123.htm

2. ## 号截取,删除左边字符,保留右边字符。

1

echo ${var##*/}

##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

即删除 http://www.aaa.com/

结果是 123.htm

3. %号截取,删除右边字符,保留左边字符

1

echo ${var%/*}

%/* 表示从右边开始,删除第一个 / 号及右边的字符

结果是:http://www.aaa.com

4. %% 号截取,删除右边字符,保留左边字符

1

echo ${var%%/*}

%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符

结果是:http:

5. 从左边第几个字符开始,及字符的个数

1

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

结果是:http:

6. 从左边第几个字符开始,一直到结束。

1

echo ${var:7}

个字符开始,一直到结束。

结果是:www.aaa.com/123.htm

7. 从右边第几个字符开始,及字符的个数

1

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

结果是:123

8. 从右边第几个字符开始,一直到结束。

1

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。

结果是:123.htm

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

数组的操作

定义

数值类型的数组:一对括号表示数组,数组中元素之间使用"空格"来隔开。

举个列子:

arr_number=(1 2 3 4 5);

字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用"空格"来隔开。

arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss');

操作

我们使用数值类型数组arr_number=(1 2 3 4 5)做为源数组进行相关的讲解:获取数组长度,读取某个下标的值,对某个下标赋值,删除、分配和替换以及遍历。提一个知识点,我们在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。

获取数组长度

arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度。

读取某个下标的值

arr_index2=${arr_number[2]},即形式:${数组名[下标]}

对某个下标赋值

这里需要提出两个问题:

第一个问题是如果该下标元素已经存在,会怎么样?

答:会修改该下标的值为新的指定值。

例如:arr_number[2]=100,数组被修改为(1 2 100 4 5)

,指定下标为10或者11或者大于5的任意值会如何?

答:新赋的值被追加到数组的尾部。

例如:arr_number[13]=13,数组被修改为(1 2 100 4 5 13)

删除操作

的数组;

清空整个数组:unset arr_number;

分片访问

分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。

开始,元素个数为4。

模式替换

形式为:${数组名[@或*]/模式/新值}

例如:${arr_number[@]/2/98}

数组的遍历

数组遍历我们使用for语句来演示:

for v in ${arr_number[@]}; do

echo $v;

done

Linux shell脚本编程&lpar;三&rpar;

Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

Linux shell脚本编程&lpar;二&rpar;

Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

Linux shell脚本编程&lpar;一&rpar;

Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

Linux Shell 脚本入门

linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

Linux Shell脚本攻略 读书笔记

Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

阿里Linux Shell脚本面试25个经典问答

转载: 阿里Linux Shell脚本面试25个经典问答 Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命 ...

Linux Shell脚本教程

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

随机推荐

tangram2&period;6&lpar;XE2&rpar;&bsol;Demo&bsol;notify&bsol;notifyGroup&period;groupproj

1.以下此异常,为exe没有加载到Tangram_Core.bpl 放到exe当前文件夹下即可 2.此例子的接口实现在exe中,exe中下发通知到dll,dll 中 as 获取接口传窗体到exe中: ...

&period;net 获取AppDomain创建了多少

partial class HttpBrowser { public static string IsolateCall(PageContentHandler pHandler) { Contract ...

Touch 事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...

Matplotlib for Python Developers

这个教程也很不错,http://reverland.org/python/2012/09/07/matplotlib-tutorial/ 也可以参考官网的Gallery,http://matplotl ...

cocos2d anchor point 锚点解析

anchor point 究竟是怎么回事? 之所以造成不容易理解的是因为我们平时看待一个图片是 以图片的中心点 这一个维度来决定图片的位置的.而在cocos2d中决定一个 图片的位置是由两个维度 一个 ...

在VM中安装Android4&period;4连接小米手环 之 在VM中安装Android4&period;4

今天刚买了个小米手环,系统须要4.4及以上,但自己手机系统版本号不匹配.故打算在VM中安装Android4.4连接小米手环. 这一节先介绍在VM中安装Android4.4(怎么安装VM就不介绍了) 1 ...

Unix&sol;Linux环境C编程入门教程&lpar;18&rpar; kali-linuxCCPP开发环境搭建

1. Kali linux是BT5的晋级版本,用于信息安全.基于Debian7内核.新建虚拟机. 2. 选择默认虚拟机 3. 选择稍后安装操作系统 4.选择Linux Debian7 64位,因为Ka ...

JS中的作用域链

在js中数据的声明方式有两种: 1.用var声明,例如:var num = 10: 2.直接声明,例如:num = 10: 两种声明方式在某些情况下是有区别的: var data = 10; func ...

View绘制流程

1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 dr ...

利用cookie实现iframe刷新时停留在当前页面

这段时间第一次用iframe,发现问题还挺多,这次主要解决了一个用cookie实现iframe刷新时停留在当前页面,具体步骤如下: 1.必须在每一个页面中记录下当前的url并存入cookie中,具体代 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值