您的位置:首页 > 运维架构 > Shell

shell编程和正则表达式相关知识

2016-06-13 22:47 337 查看
工作了大半年了,发现学习嵌入的我,还需要对shell脚本有一定的了解,因为个人感觉Makefile有很多的基础语法就是shell基础。所以在51CTO上,弥补了一把shell的基础,虽然没有精通,但是现在能够看懂还不是什么问题了。接下来我就把我印象中比较重要的知识点记录一下。

shell中变量直接赋值是不能加空格的,也不需要封号。 比如 name=sean

变量的间接赋值 read -p “give number ” a 表示通过用户交互给a赋值,同时双引号里面的是打印出来的提示。

$?表示上一条指令是否执行成功,如果成功的话是0.

条件判断使用[ 2  -eq 3 ] 注意中括号两边需要空格 也可以使用[[ 2=3 ]]但是该表示方法在不同的操作系统可能结果不同,因为有的不能识别该语法。

[ -z $var ]表示变量var是否为空值

[ -d $var ]表示变量var路径是否存在

[ -f $var ]  判断文件var是否存在

[ -s $var ] 判断文件是否可执行

单引号里面的字符不转义,双引号里面的字符是转义的。

$0表示脚本名字 $1传进去的第一个参数 $2传进去的第二个参数 $#传进去的参数总数 $@传进去的所有参数

exit 1 退出脚本,并且是非正常退出

同样的函数也可以传递参数,但是并不等于执行脚本时传进去的参数

if []; then

elif []; then

else

fi

while []

do 

done

$(( 2+3))表示算术运算

for i in 'seq 10'

do

done

 

case $i in

var1)

;;

var2) 

;;

esac

bash -x name.sh表示调试脚本

cmp -s xx1 xx2 比较两个文件或二进制程序。

wc -l 统计行号

dos2unix 将windows中文本内容格式转化为unix文本格式,主要是每一行最后的换行字符不同的区别。

如果要在脚本中加载函数库 需要使用source或者. 后面写上库的名字

shell计算

$((1+2))

[1+2]

expr 1+ 2 注意操作符之间需要添加空格,否则会报错

echo -n 表示输出不换行,默认是换行的。

time 命令可以测脚本运行使用的时间

dirname 求出文件路径

basename 求出文件

data + %Y-%m-%d 

当然shell也可以使用printf打印,格式如C语言。

shift 表示右移输入参数

id user 用来判断user用户是否存在

touch xxx创建新的用户

curl ip.cn? ip=11.11.11.11 可以用来判断ip地址的归属地

接下来是正则表达式的基本语法

^ xx 表示以xx为开头的行

xx$ 表示以xx为结尾的行

^$表示空白行

grep -v 排除有关键字的行 -c 有关键字的统计行 -E 表示允许扩展正则表达式

[a-zA-Z0-9]表示符合的字符是字母和数字

[^]表示取反

.表示任意字符

*表示0个或任意个前面的字符

\{3,5\}表示重复字符3-5次

?表示前面的字符0个或1个。

需要注意的是双引号里可以引用变量的内容,但是单引号只能是变量字面上的意思。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: