目录
1.概述
shell脚本就是一个文件,包含一系列要执行的的shell指令
2.格式
-
shell脚本扩展名为.sh
-
shell脚本的开头固定为:
#!/bin/bash
; (使用bash)
*bash: Unix shell的一种,是一个命令处理器,通常运行于文本窗口中,并能 执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。 -
脚本可能没有执行权力,通过chmod进行更改,方法见【入口】
3. 命令语法
3.1 输入输出
-
3.1.1 echo打印指令
echo "打印内容/'$变量名'"
变量的使用:`$变量名`
-
3.1.2 read输入读取
read [参数] [变量]
参数 解释 -a 定义其变量为数组,赋值,默认是以空格为分割符 -p 后面加提示信息,即在输入前打印提示信息 -e 在输入的时候可以使用命令补全功能 -n 紧接一个数字,定义输入文本的长度 -s 输入字符时不在屏幕上显示,如boot用户密码 -t 后面跟数字,其为输入字符的时间,超过跳出 -u 跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的
3.2 数值计算
- $((“变量名” ±x/ “变量名”)) 或者 $[“变量名” ±x/ “变量名”]
- 只支持整形数据
注意,赋值给变量时,等号左右不能有空格
result=$((a+b)) #等号两边不能有空格
#result=$[a+b]
3.3 test判断
- test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
3.4 [] 条件判断
- 类似于test判断
[ "判断语句" ]
; 注意中括号与其内容要有空格分开- 中括号中只能判断"==“或者”!="
- 中括号中的字符串和变量需要加双引号,加双引号的目的时为了让字符或这变量作为一个整体,不然对于如a b这样的字符串会只识别前面的a,而后面的内容认定为多于变量。
3.5 if then else
- 语法类似c语言ifelse
if [ ”条件判断语句“ ]; then (执行语句) else (或者elif [ ”条件判断语句“ ]; then) (执行语句) fi
3.6 case
-
语法类似c语言switch case
case $变量名 in "第一个变量内容") (执行语句) ;; *) #第二个变量内容 (执行语句) ;; #代码段结束标志 . . . esac
-
不同的值右边有单个右括号,双分号表示语句结束
-
值可以使用*(通配符表示其余所有类型),加""表示“*”字符
3.7 && and ||
-
&&: 左值成立时执行右值,否则不执行右值
-
||:左值成立时不执行右值,左值不成立时执行右值
a && b #a成立就执行b a || b #a成立就不执行b,与&&相反
3.8 脚本参数
- 使用格式
$"数字"
表示shell脚本的参数 - $0 表示运行脚本指令本身“./脚本名.sh”
- $# 表示最后一个参数的标号,也可以用来表示参数个数
- $@ 表示所有的参数
3.9 函数
-
函数的声明定义类似于c,但函数只有以个类型:
function
function 函数名(){ //函数代码段 }
-
函数的调用只需要写函数名,无参数不需要写空括号;如果有参数,也不要括号,用空格隔开参数和函数名即可
exampleFunction a b
3.10 循环
-
while 循环,条件成立进入循环体
while [判断条件成立] do (循环体) done
-
until循环,条件不成立进入循环体,与while相反,结构基本与while相同
until [判断条件不成立] do (循环体) done
-
for循环
- 第1中:不同于c中for循环,每次变量等于一个值,然后执行循环体,直至没有值循环停止
for 变量 in 值1 值2 值3 ...... do 循环体 done
- 第2种:类似于c中for循环,括号时双括号。这里的限制值如果时变量可以不用$和双引号修饰,只是变量名也可以,但是要是整数
for ((初始值;限制;步长)) do 循环体 done