Shell练习

Shell

脚本格式:以!#/bin/bash开头(指定解析器)

 

执行:sh/bash 相对路径或者绝对路径的.sh文件  也可以./ 但是需要设置文件执行权限

 

追加内容到某个文件 : echo 内容 >> 文件名

 

shell中的变量:

系统变量:

$HOME:home目录

$PWD:当前目录

$SHELL:shell目录

$USER:当前用户

 

自定义变量:

声明:变量=值

使用变量:$变量

 

撤销变量:unset 变量名

 

声明静态变量法:readonly 变量 

静态变量不能unset

 

 

变量提升为全局变量 需要:export 变量(控制台执行)

 

特殊变量:

$n:n为数字,$0表示该脚本名称,$1-$9位第1个到第9个参数占位符,10个以上的参数,需要用大括号表示 ${10};

$#:获取所有输入参数的个数,常用于循环;

$*:这个变量代表命令行中所有的参数,$*把所有参数看成一个整体

$@:这个变量也代表命令行中所有的参数,$*把每个参数看成区分对待

$?:表示最后一次执行命令的返回状态;如果这个变量值为 0,证明上一个命令执行正确,否则为错误

 

运算符:

1)$((表达式))或者$[表达式]

2)expr +, -, \*, /, % 加 减 乘 除 取余

注意:expr 运算符间要有空格

计算 (1+1)*5 ====>  expr `expr 1 + 1` \* 5 或者 $[(2+3)*4]

 

条件判断:

[ condition ] 注意 condition 前后必须有空格;条件非空即为true

常用条件判断:

1)两个整数之间的比较

= 字符串比较

-lt 小于

-gt 大于

-eq 等于

-le 小于等于

-ge 大于等于

-ne 不等于

2)按文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

3)按照文件类型进行判断

-f 文件存在并且是一个常规文件

-e 文件存在

-d 文件存在并是一个目录

4)多条件判断:

&&:表示前一条命令执行成功后才执行下一条

||:表示上一条命令执行失败后,才执行下一条

 

流程控制:

1)if语句

if [ 条件判断式 ];then

      程序

fi

或者

 

if [ 条件判断式 ]

 then

    程序

elif

   程序

fi

注意:条件判断式左右必须有空格; if后面也要有空格!!!

 

2)case语句

case  $变量名 in 

 ”值1”)

  如果变量值等于1,则执行程序1

;;(相当于break)

 ”值2”)

  如果变量值等于2,则执行程序2

;;

 …省略其他分支…

  *)(相当于default)

 如果变量都不是以上值,则执行此处;

  ;;

esac(整个循环结束)

 

3)for循环

i: 

 for((初始值;循环控制条件;变量变化))

  do

     程序

  done

 

i::

for 变量 值1 值2 值3…

do

     程序

  done

 

4)while

 While [条件判断表达式]

  do

     程序

  done

 

 

 

函数:

1)basename:会截取,留下文件的文件名

2)dirname :会截取,返回文件的相对路径(目录部分,不包含文件名)

 

自定义函数:

[function] funname[()]

{

Action

[return int]

 

}

注意:

必须在调用函数的地方先声明函数

函数的返回值只能通过系统变量$?获得

 

 

shell常用工具:

cut:

cut [选项参数] 文件名称

参数:

-f 列号,取出第几列

-d 分隔符 ,按照指定分隔符分割列

 

sed:
sed 是一种流编辑器,处理时,把当前处理的行,存储在缓存中,称为‘模式空间’,接着用sed处理缓冲区中的内容,处理完成后

把缓冲区中的内容送往屏幕。紧接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你用重定向存储输出;

 

sed[选项参数] ‘command’ filename

选项参数:

-e 直接在指令列模式下使用sed 的动作编辑

命令command

a 新增,a的后面可接字符串,在 下一行出现

d 删除

s 查找并替换

 

awk:

一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理

awk [选项参数] ‘pattern1{action1} pattern2{action2} pattern3{action3}…’ filename

pattern:表示awk在数据中查找的内容,就是匹配模式

Action:在找到匹配内容时的一系列命令

选项参数:
-F 指定输入文件分隔符

-v 赋值一个用户定义变量

 

sort: 将文件进行排序,并将排序结果标准输出

sort(选项)(参数)

选项参数:
-n 按照数值的大小排序

-r 以相反的顺序排序

-t 设置排序时所用的分隔符

-k 指定需要排序的列

参数:

指定待排序的文件列表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2022-07-12 16:04  哈皮的玩偶  阅读(25)  评论(0编辑  收藏  举报