@TOC
一、Shell编程基础
1.1 变量
1.1.1 变量定义
= 左右不要有空格- 如果内容有空格,需要使用
单引号或双引号 - 双引号支持转义符,
$ 开头的变量会被自动替换
1.1.2 预定义变量
PWD:当前目录USER:当前用户HOME:当前用户主目录,还可以用~简写PATH:当前所有可执行程序RANDOM:产生一个随机数
1.1.3 特殊符号
{1..10}:等价于 seq 1 10,表示 1~10 数字seq 1 3 10:表示生成一个步进为 3 的 1~10 的数((a=a+3)):整数扩展,双括号里面的变量作为整数处理
1.1.4 变量类型
- Shell中不区分变量类型的,这一点和Python很像,
所有的变量都是基础类型,只是在运行的时候做动态解析。其中字符串、数字、布尔是常用的。 - 布尔的基本表示表现形式是
true和false。
1.1.5 内置判断
- 判断主要包括
算数判断,与或非的逻辑判断,还有一些 Shell 中内置的判断三个方面。下面为常用的一些内置判断 -e file:表示如果文件存在,则结果为真;-d file:表示如果文件是一个子目录,则结果为真;-f file:表示如果文件是一个普通文件,则结果为真-r file:表示如果文件可读,则结果为真;-s file:表示如果文件的长度不为 0,则结果为真;-w file:表示如果文件可写,则结果为真;-x file:表示如果文件可执行,则结果为真。
1.2 逻辑控制
1.2.1 条件判断 if
- 首先看下 if 条件判断,if 首先检测判断条件是否成立,如果成立则执行 then 语句块内的逻辑,else 执行判断不成立的逻辑,还有 elif…if…,它类似于 Python,当条件都不满足时去判断下一个条件。
1.2.2 for循环
- 第一种实现方式:
for((i=0;i<10;i++)) - 第二种实现方式:
for...in...语句块
1.2.3 while循环
- while 首先判断条件,条件成立则在 do 语句块中执行操作。
1.2.4 退出循环 break、continue
return:函数返回exit:脚本进程退出break:退出当前循环continue:跳出当前循环,进入下一次循环
二、编写Shell脚本实战
2.1、注释
- ·注释以
#开头,用于增加脚本可读性。shell脚本以.sh结尾。可以使用vim命令创建一个shell脚本。
2.2、参数
当脚本开始执行的时候,会按照制定规则去解析语句。当传递一个参数给脚本时,它是怎么被解析的?
$0:表示被执行的程序,也就是当前脚本$1、$2分别表示传递的第 1 个和第 2 个参数,Shell 默认只支持9个参数,如果你需要支持更多的参数可以使用 shift$@、$*表示所有的参数,但不包含 $0

2.3、函数
函数:函数是以函数名()跟{}括起来的内容组成。函数可以实现一些功能封装,同时函数也支持与脚本类似的参数解析逻辑。

