linux正则表达式脚本实例,Linux 脚本、 正则表达式 等

shell的脚步总是以这样的一行开头:

#!/bin/bash

这行叫做shebang

顺序执行两个命令,可以$cmd1;cmd2

要验证脚本语法的准确性,可以用bask-nscriptfilename来验证

如果要debug则为bash-xscr.sh

删除老的文件:

find /home/wwwroot -type f-mtime +30 -exec rm-f{}\;

这里{}和;都是-exec必须的,加\是防止shell解析;

错误输出

如果看见命令结尾有一个2>/dev/null这是将命令的标准错误输出,即2,定向到null

这就是linux的文件描述符decsriptor

stdin0

stdout1

stderr2

你可以把错误和标准输出分别重定向到两个文件

somecmd2>err.txt1>out.txt

变量:

变量既可以做字符也可以做整数,如果是当作整数操作时,要加上let

let"x=$x+1"

不然用x=$x+1就变成后面加上一个+1了

注意变量赋值,等号前后不要有空格!

变量的长度,就是说它有几个字符,${#var}

变量类型:

变量都是作为string存储的,如果要做数学运算,就要用let或者中括号

letresult=no1+no2#这里引用变量不用$了

letreult++

letno1+=6

OR

result=$[no1+no2]#这里对于空格的位置和个数要求很高,中括号里面也可以用$引用

result=$[$no1+100]还有一种方法是用(()),比较烦了

还有方法是expr命令,对于格式要求很高

expr3+4返回7,如果没有加对空格expr3+4就返回“3+4”了!

result=`expr3+4`

result=$(expr$no1+5)

注意上面$加上(),其实也是运行一个命令获取返回值的办法。

注意,如果你要引用变量的值,要放在引号里的话,把它放在双引号里,如果是放在单引号里,不会自动扩展变量的值。

环境变量:

UID,是用户ID,对于root总是0,所以要检查是不是以root身份在运行,

if[$UID-ne0];then

dosomething

fi

输出变量的时候

echo$var

echo${var}

都可以,后者可能是嵌套在双引号里面有用,不容易和其他文字混淆。

数组的定义,可以两种方法

array=(123456)或者

array[0]="a"

array[1]="b"

array[2]="c"

引用数组的值:

echo${array_var[0]}或者echo${array_var[$index]}或者打印所有echo${array_var[*]}

要知道数组长度echo${#array_var[*]}

×××函数

函数定义可以是functionfname(){...}或者直接fname(){...}

引用的时候直接用名字fname,有参数的话加在后面,不用括号

$1$2$3原来使用传递给function的参数

$?表示上次执行的命令返回的值,一般0表示运行正常

循环,判断等顺序的命令:

forvarinlist;

do

commands;#use$var

done

----

whilecondition

do

commands;

done

------

x=0;

until[$x-eq9];

doletx++;echo$x;

done

-----

ifcondition;

then

commands;

fi

-------

ifcondition;

then

commands;

elifcondition;

then

commands

else

commands

fi

--------

在条件判断里面,如果判断string的话,最好是加上双括号

[[$str1==$str2]][[$str1!=$str2]][[$str1>$str2]]

[[-z$str1]]:Returnstrueifstr1holdsanemptystring

[[-n$str1]]:Returnstrueifstr1holdsanon-emptystring

脚本里面运行一个命令或程序,是可把命令程序名称放在变量里的,

看profile运行目录里一系列.sh文件,用了这个方法

for i in/etc/profile.d/&.sh;do

if[-r"$i"];then

.$i

fi

done

Linux对正则表达式支持的很好,如果熟悉的话,工作起来会很方便。

比如对于.conf之类的配置文件,通常里面很多是#开头的注释行。你要看真正有用的配置行的话,就可以用这个命令

grep^[^#]httpd.conf

这里第一个^表示行的开头,中括号里的^表示否,即找出行开头不是#的行

还有很多实用的用法,等以后想到一一补充,呵呵。

sed 里的正则表达式,又有些不同。

小括号和大括号前面都要加上反斜杠,不然就当一个普通字符处理。

\{ i

\}As

*, but matches exactly i sequences ( i is a decimal integer; for portability, keep it between 0 and 255 inclusive).

\{i,j\}

Matches between i and j, inclusive, sequences.

\{ i

,\}

Matches more than or equal to i sequences.

\(regexp\)

Groups the inner regexp as a whole,

括号里定义的正则表达式匹配的字符可以引用,

\ digit

Matches the digit-th

\(...\) parenthesized subexpression in the regular expression.

This is called a back reference.

Subexpressions are implicity numbered by counting occurrences of

\( left-to-right.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值