shell编程(笔记)

1.shell变量

1.1局部变量 : 只在语句块中起作用

1.2环境变量 :系统环境env,供系统正常运行的一些变量

1.3shell变量 : 

位置变量:$1-$9 分别表示第一个到第九个位置的变量

$0  :当前进程的脚本名

$!  : 后台运行的最后一个进程的PID

$?  :上一条命令的返回值

$*  : 代表所有参数内容

$$   : 当前进程的PID

$#   : 表示参数个数

$@   : 代表所有参数内容

2.shell数据类型

2.1shell默认将所有的字符解析成字符串,没有引号、单引号或者双引号都是字符串

单引号:不会解析变量,是什么就输出什么

双引号:会解析变量

2.2 数值计算可以用bc(相当于计算器)

成功返回1,不成功返回0

3.整数数值的运算

第一种:  $((  ))  常用于整数的算数运算

第二种:  $[[  ]]   适用于字符串之间的运算

第三种:  expr表达式 

[ ] 和 [[  ]] 的区别:[ ] 会进行解析字符串,会把含有空格的字符串解析成两个字符串,可能会导致变量个数有误的报错,[[  ]] 不会进行变量解析

4.字符串的截取

 ${line:0:4}  :截取line的前四个字符

${line:0-9}  :截取line的后9个字符

${line##*:}  :从左向右截取最后一个:后面的字符

${line#*:}  :从左向右截取第一个:后的字符

${line%%:*}  :从右向左截取最后一个:后的字符

${line%:*}  :从右向左截取第一个:后的字符

${#line}  :输出line的长度

${line[@]}  :输出line的每一个字符

5.数组

定义:使用圆括号定义数组,中间以空格作为分割

6.for循环

6.1

for 变量 in 值1 值2...

do

循环语句

done

6.2类似c语言的写法

for ((  i=0;i<5;i++))

do

循环语句

done

7.while循环 

while

do

循环语句

done

8.if条件判断

if  [[ 条件 ]] ;then

        执行语句

elis [[ 条件判断 ]];then

        执行语句

else

        执行语句

fi

9.shell常见命令

 9.1 seq命令

seq [option] start step end   :产生从start到end的步长为step的一串数据

 [option]      -w, --equal-width
                      equalize width by padding with leading zeroes  用0填充使他们等宽

 9.2常用判断

[ -d  xx ]  :判断是不是目录

[ -f  xx ]   :判断是不是文件

[ -z  xx ]  :判断xx长度是否为0

[  -n  xx]  :判断xx长度是否非零

[ !  xx ]  :取逻辑非

[ xx  -a  xx ]  :如果xx 和xx 都为真,表达式为真

[  xx  -o  xx  ]  :如果xx和xx有一个为真,表达式为真

字符串大小的判断都是根据字典序来排的

逻辑判断:只能用于整数判断

[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 
[ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,<>
[ INT1 -gt INT2 ] INT1大于INT2返回为真 ,>
[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=
[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<
[ INT1 -le INT2 ] INT1小于等于INT2返回为真,<=

10.判断服务是否启动的方法(通过PID来判断)

ps -ef :查看当前进程

 ps -aux  :查看当前进程

 11.shell脚本文本处理命令

 sed  : 修改文本内容

awk   :文本截取

-F  :指定分隔符

$0  :输出所在行

先拿到/etc/passwd文件,通过awk,指定用:号截取成一个个的字段,然后匹配第一个字段中,有包含sc这个字符的,然后将整行输出出来

grep  :文本过滤

将包含sc8的行输出

sort  :排序

将他们以第四个字段为标准倒序排列出来

uniq  :去重命令

-c :统计一下每个字符出现了多少次

要先排序再进行去重,因为uniq命令只会给邻居去重,先进行排队才能将所有的字符去重

 head   :  从开头开始截取文件

默认截取文件强势行

-n  :指定截取行数

tail   : 从末尾开始截取文件

默认截取文件后十行

-n  :指定截取行数

11 cut命令

cut  :从文本文件或者文本流中间提取文本列

cut   -选项  提取范围  文本文件

常见选项:
-c  :提取字符

-f  :提取字段

-d  :指定分隔符,默认分隔符为tab键

 提取范围:
n  :第n项

n-  :第n项到末尾项

-n  :行首到第n项

n-m  :从n到m项

n,m   :第n项到第m项

12 tr命令

tr -s “ ”  :将所有连续的空格的压缩成一个

cut 文件时,将每一个空格都会识别成一个字符,所以截取时非常麻烦,现在我们用ts命令将文本中的空格都压缩成一个空格,我们就能很方便的截取字段

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值