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