Shell学习笔记

目录

 第一章 Shell概述

第二章 Shell脚本入门

第三章 变量

自定义变量

特殊变量

第四章 运算符

第五章 条件判断

 第六章  流程控制

if判断

case语句

for循环

while循环

第7章 read 读取控制台输入

第8章 函数

系统函数

自定义函数

第9章 正则表达式入门

 常规匹配

常用特殊字符

 第10章 文本处理工具

cut

awk


 第一章 Shell概述

Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核

Shell还是一个功能相当强大的编程语言

1)Linux提供的shell解析器有

2)bash和sh的关系

sh和bash都是linux的一种,bash命令是sh命令的超集,大多数sh脚本都可以在bash下运行

3)centos默认的解析器是bash

第二章 Shell脚本入门

1)脚本格式

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

2)第一个Shell脚本:helloworld.sh

需求:创建一个shell脚本,输出helloworld

touch helloworld.sh
vim helloworld.sh

执行方法

第一种:采用bash或sh + 脚本的相对路径或绝对路径(不用赋予脚本+x权限)

第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限 +x )

  • 先赋予helloworld.sh脚本的+x权限

  • 执行脚本

chmod +x helloworld.sh
相对路径
./helloworld.sh
绝对路径
/opt/shells/helloworld.sh

第三种【了解】:在脚本的路径前加上"."或者source

有以下脚本

#!/bin/bash
A=5
echo $A

分别使用sh,bash,./ 和 . 的方式来执行,结果如下

原因:

前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。 
​
第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前 shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需 要 source 一下的原因。
​
 开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的 当前变量,父 shell 是不可见的

第三章 变量

系统预定义变量

1)常用系统变量

$HOME $PWD $SHELL $USER等

自定义变量

1)基本语法

(1)定义变量:变量名=变量值 (等号前面不能有空格)

(2)撤销变量:unset 变量名

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

2)变量定义规则

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

  • 等号两侧不能有空格

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

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

3)变量的声明与使用

readonly变量不能unset

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

可以把变量提升为全局环境变量,可供其他shell程序使用

export 变量名

特殊变量

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

$# 功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性

 

$* 、 $@

基本语法

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

$@ 功能描述:这个变量也代表命令行中所有参数,但是把每个参数区分对待

$?

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

第四章 运算符

1)基本语法

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

第五章 条件判断

1)基本语法

(1)test confition

(2)[ condition ] (condition前后要有空格)

注:条件非空即true   [ abcd ]返回true  ,[  ]返回false

2)常用判断条件

(1)两个整数之间比较

注:如果是字符串之间进行比较,用等号“=”判断相等;用“!=”判断不等

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

-r  有读的权限

-w  有写的权限

-x  有执行的权限

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

-e  文件存在

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

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

3)案例实操

23是否大于22

helloworld.sh是否有写的权限

多条件判断(&&表示前一条命令执行成功,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令)

 第六章  流程控制

if判断

1)基本语法

 注意事项:1、[ 条件判断式 ] 中括号和条件判断式之间必须有空格

                2、if后要有空格

案例实操

 

case语句

1) 基本语法

 

注意事项:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束

(2)双分号“;;”表示命令序列结束,相当于java中的break

(3) 最后的“*)”表示默认模式,相当于java中的default

2)案例实操

!/bin/bash
case $1 in
"1")
    echo "banzhang"
;;

"2")
    echo "cls"
;;
*)
    echo "renyao"
;;
esac

for循环

1)基本语法1

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

2)案例实操

从1加到100

#!/bin/bash
sum=0
for((i=0;i<=100;i++))
do
    sum=$[$sum+$i]
done
echo $su

3)基本语法2

for 变量 in 值 1 值 2 值 3…
do
    程序
done

4)案例实操

(1)打印所有输入参数

#!/bin/bash
#打印数字
for i in cls mly wls
do
echo "ban zhang love $i"
done

while循环

1)基本语法

hile [ 条件判断式 ]
do
    程序
done

2)案例实操

第七章 read 读取控制台输入

  1)基本语法

        read (选项) 参数

选项:

        -p  指定读取值时的提示符

        -t   指定读取值时的等待时间(秒) 如果-t 不加表示一直等待

参数:

        变量:指定读取值的变量名

 2)案例实操

提示7秒内,读取控制台输入的名称

#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds :" NN
echo $NN

第八章 函数

系统函数

①basename

1)基本语法

2)案例实操

 

② dirname

1)基本语法

 2)案例实操

自定义函数

1)基本语法

[ function ] funname[()]
{
    Action;
    [return int;]
}

2)经验技巧

(1)先声明再调用,shell脚本是逐行运行,不会像其它语言一样先编译

(2)函数返回值,只能通过$?系统变量获得,可以显示叫 :return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值 n(0-255)

3)案例实操

计算两数只和

第九章 正则表达式入门

正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文 本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在 Linux 中,grep, sed,awk 等文本处理工具都支持通过正则表达式进行模式匹配

 常规匹配

一串不包含特殊字符的正则表达式匹配它自己,例如

常用特殊字符

1)特殊字符:^

        

2)特殊字符 $

3)特殊字符   .

 

4)特殊字符  *

 5)字符区间:[ ]

6)特殊字符 \

 

 第十章 文本处理工具

cut

     在文件中负责剪切数据。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出

1)基本用法

2)选项参数说明

3)案例实操

 

awk

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

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值