概述
目录
第一章 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
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分割符将每行切片,切开的部分再进行分析处理
最后
以上就是仁爱冷风为你收集整理的Shell学习笔记的全部内容,希望文章能够帮你解决Shell学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复