AI智能
改变未来

快速掌握Shell


一、Shell中的变量

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

1、系统变量

HOME、HOME、HOME、PWD、$SHELL等

2、自定义变量

(1)定义变量:变量=值

(2)撤销变量:unset 变量

(3)声明静态变量:readonly变量,注意:不能unset

变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

(4)变量的值如果有空格,需要使用双引号或单引号括起来。

3、特殊变量:$n

​ $n (功能描述:n为数字,$0代表该脚本名称,$1-9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10})

4、特殊变量:$#

$# (功能描述:获取所有输入参数个数,常用于循环)。

5、特殊变量:∗、*、∗、@

∗(功能描述:这个变量代表命令行中所有的参数,* (功能描述:这个变量代表命令行中所有的参数,∗(功能描述:这个变量代表命令行中所有的参数,*把所有的参数看成一个整体)

@(功能描述:这个变量也代表命令行中所有的参数,不过@ (功能描述:这个变量也代表命令行中所有的参数,不过@(功能描述:这个变量也代表命令行中所有的参数,不过@把每个参数区分对待)

6、特殊变量:$?

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

二、运算符

(1)

“$((运算式))”或“$[运算式]”

(2)expr + , – , *, /, % 加,减,乘,除,取余

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

三、条件判断

1.基本语法

[ condition ](注意condition前后要有空格)

注意:条件非空即为true,[ atguigu ]返回true,[] 返回false。

2. 常用判断条件

(1)两个整数之间比较

= 字符串比较

-lt 小于(less than) -le 小于等于(less equal)

-eq 等于(equal) -gt 大于(greater than)

-ge 大于等于(greater equal) -ne 不等于(Not equal)

(2)按照文件权限进行判断

-r 有读的权限(read) -w 有写的权限(write)

-x 有执行的权限(execute)

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

-f 文件存在并且是一个常规的文件(file)

-e 文件存在(existence) -d 文件存在并是一个目录(directory)

四、流程控制

1、if

if [ 条件判断式 ];then

程序

fi

或者

if [ 条件判断式 ]

then

​ 程序

fi

​ 注意事项:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格

(2)if后要有空格

2、case

case $变量名 in

“值1”)

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

​ ;;

“值2”)

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

​ ;;

…省略其他分支…

*)

​ 如果变量的值都不是以上的值,则执行此程序

​ ;;

esac

注意事项:

  1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  2. 双分号“**;;**”表示命令序列结束,相当于java中的break。
  3. 最后的“*)”表示默认模式,相当于java中的default。

3、for

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

do

​ 程序

done

或者:

for 变量 in 值1 值2 值3…

do

​ 程序

done

4、while

while [ 条件判断式 ]

do

​ 程序

done

注意: while 后面需要有空格

五、Shell工具

1、cut

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

cut [选项参数] filename

说明:默认分隔符是制表符

选项参数 功能
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列

2、 sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

  1. 基本用法

sed [选项参数] ‘command’ filename

  1. 选项参数说明
选项参数 功能
-e 直接在指令列模式上进行sed的动作编辑。

3、命令

命令 功能描述
a 新增,a的后面可以接字串,在下一行出现
d 删除
s 查找并替换

3、awk

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

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

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

action:在找到匹配内容时所执行的一系列命令

选项参数 功能
-F 指定输入文件折分隔符
-v 赋值一个用户定义变量

4、sort

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

sort(选项)(参数)

选项 说明
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分隔字符
-k 指定需要排序的列

5、wc

​ wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

wc [选项参数] filename

选项参数 功能
-l 统计文件行数
-w 统计文件的单词数
-m 统计文件的字符数
-c 统计文件的字节数
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 快速掌握Shell