零散的shell使用小结

入职这段时间大量使用shell,有一些零散的点,记在这里备忘。

一 shell种的if

shell中的if与c中的if用法有很大区别,一般是结合[ ]使用(目前我只这么用过:>),例如if [ $a -eq 0 ]; then do ... done。中括号实际上起真正的判断作用,需要特别注意的是,[和]两边都需要有空格。

[]中,与数字比较时,有以下几种关系操作符:

-eq 相等

-ne 不相等

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

与字符串比较时,有以下操作符:

= 等于

!= 不等于

注意:关系操作符两边都要加空格。

二 shell中的循环

for循环有以下几种使用方法:

1

for file in $(ls); do

echo $file

done

$(ls)是把ls当做命令执行,输出结果当做数组的值,数组的每个元素是按空白符分开的。


2 类似c语言的用法

for ((i=0; i<10; i++)); do

echo $i

done

(())中的变量可以不加$,在这里与c语言一样。

3

for i in 0 1 2 3; do

echo $i

done

4

for i in {1..3}; do

echo $i

done


while循环的用法: 

while 条件表达式; do

循环体

done

条件表达式可以有许多形式,如for循环种(())的类似c语言的方法,还可以是if中类似的条件语句。

三 awk

在日志分析时,awk和sed是最常用的命令,这里简单介绍一下。

1 基本方法:awk -F”分隔符” ‘BEGIN{}condition_1{}condition_2{}END{}’ input_file_1 input_file_2

2 BEGIN{}和END{}是可选的,其实BEGIN和END也相当于特殊的condition。BEGIN{}是awk启动时先执行的操作,其中的语句会在输入文件被处理之前执行,里面一般是一些初始化操作。END{}是所有输入文件处理完之后执行的部分,在统计类的应用中常用。

3 condition是在处理输入的每行之前检查的条件,如果符合条件,才执行后面花括号中的语句。condition可以是==、>、<之类的条件语句,也可以使用正则表达式,如var~/abc/表示变量var匹配//中的正则表达式。

4 awk中有一些内置的变量,如$n表示正在处理的一行中的第n个字段(字段是以-F后面的分隔符分的),字段从1开始算起。$0表示整行。ARGIND表示第几个输入文件(mac系统下貌似有问题),NF表示当前行的字段个数,NR表示当前处理的行数。

5 condition之间(包括BEGIN和END)没有先后顺序,可以把END{}写在BEGIN{}前面。

6 最后面是输入文件,可以有多个,awk会按文件名的顺序处理输入文件。

四 函数

最后说一下shell的函数,函数的声明方式为:

function foo()

{

x=$1

...

}

调用方法:foo argv

函数可以接受参数,在函数中通过$1,$2来使用参数

注意:shell中,函数中的变量是全局变量!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值