脚本文件的创建
以.sh为后缀名的文件,包含shell所执行命令的文件
脚本文件的第一行必须是 “#!”,称为shebang,它指明了执行这个脚本文件的解释程序的绝对路径
例1 :readme.sh
read命令:从终端读入字符串放在指定变量中,用户在终端进行输入,等到遇到换行符时,输入的内容被读入,并赋值给指定的变量
运行脚本文件:
- 用bash命令新起一个进程,将脚本文件作为bash命令的参数,就会在新起的进程中运行脚本文件
- source命令(“.”)
source命令简写为".",意为在 当前进程 中执行一个脚本文件
- chmod命令:改变权限
chmod a+x readme.sh
“a”代表给所有用户,“+”代表添加,“-”代表删除,“x”代表可执行权限
这句命令的含义是给所有用户添加readme.sh的可执行权限
test命令
test命令用于逻辑分支判断
字符串比较
等号两边一定要有空格!
echo $? 查看上一命令的执行结果或返回值
返回值为1:与C语言相反,1表示逻辑false,0表示true
C语言中在程序执行一切正常时,会在最后 return 0 ,0 就是程序在执行结束之后返回的值,执行成功则返回0 。在本例中,test 命令发现1≠2,所以返回1 来表示条件不成立,而返回 0 代表一切正常
注意:echo $? 返回的是最近一次的执行结果,因此如果已经执行过一次echo $? ,再次执行该命令时,返回的是上一次echo $?的执行结果,而echo命令一般情况下都能执行成功,因此结果一般都为 0
数值比较
文件测试比较
逻辑操作
test命令的简写:配对的 [ 和 ]
expr命令
expr 即 expression 命令:计算表达式
注意:运算符两边必须有空格
条件控制语句
if
注意:1. 方括号 [ ] 2. 条件之后的“;” 3. “[”和“]”前后都要有空格
以 “fi”(反写的“if”)结束 if 语句
程序的作用:如果进入目录成功,cd
命令会返回0,if
遇到 0 会判断为是逻辑true(与C语言相反),则会打印then
中echo
的语句,并且ls
这个目录里的内容,如果不成功,则打印else
中的echo
语句,并返回1,表示该程序运行过程中有错误发生
case语句
循环语句
for语句
偷懒的 for 语句:
把脚本文件收到的所有参数默认地作为 for 语句的循环列表
for 语句循环列表即为我们传递给 for 语句的参数
while 语句
until语句
函数
因为shell中的变量没有数据类型,所以参数也没有类型,因此函数名后的“()”里内容为空