Shell 脚本是不需要编译而可以直接执行的,这种脚本语言称为解释型语言。
脚本格式:
#!/bin/bash # 第一行必须这样写。告诉系统这个脚本文件用bash 工具来进行解析(指定命令解析器)
echo "Hello Even" # 回显
变量:
Shell 脚本的变量都是字符串,即一连串的单词列表。
1、变量定义与赋值
myname="Michael Jackson" # 赋值的内容如果是一个词组那么就必须使用双引号括起来。
myName=Even_Lau # 正确,只有一个单词时引号可以不写,赋值号的两边不能有空格!
2、变量引用
echo $myName # 变量引用,变量前面加$符号即可
3、变量的种类
A 普通的用户自定义变量,比如上面的 myname。
B 系统预定义好的环境变量,比如 PATH。
C 命令行变量,如#、*、?(上一行命令的返回值) 、&(当前shell的进程号)等。例如:命令 ./example.sh abcd 1234 (参数个数为2,和C不同)
特殊符号:
引号: 双引号" "
单引号' ' (不做解析)
反引号` ` (抑音符)
竖杠 | (管道就像水管一样,将前面的命令的执行结果输送给后面的命令。)
重定向< >
举例说明:
1 time="today is `date`" #在双引号内部使用反引号,则表示需要对反引号所括起来的内容进行解析
2 echo $time # 输出则是 today is Tue Jun 15 10:10:16 CST 2021
3 echo ‘不管里面是什么直接显示,不做解析’
重定向:命令的输出重定向到文件或者从文件中读取输入 (一个箭头表示新建,两个箭头表示追加)
1、 标准输入 (stdin), 代码为0, 输入重定向使用 '<'或者 '<<'
2、 标准输出 (stdout),代码1表示, 输出重定向使用 '>'(等同于1>) 或者 '>>'
3、 标准错误输出 (stderr), 代码2 表示,重定向使用 '2>' 或者 '2>>'
既有正确输出又有错误输出时,要将所有输出都重定向到 date.log中:command 1>outputfile , 2>&1 == command &> outputfile
字符操作:
测试语句:(说明里写反了)
[ ] 可代替 单词 test ,方括号左右两边必须有空格,如下面示例:
等价于
语法单元:
分支控制:
case多路分支:
循环控制:while 循环 、until 循环 、for 循环
其他指令:
使用 exit
命令可以在脚本执行完成或遇到某个条件时终止脚本的执行。例如:exit #正常退出返回值0 exit 1 异常退出
Here 文档的用法:EOF标记符用于表示 Here 文档的开始和结束位置
cat << EOF
这是一段多行文本。
它可以包含特殊字符、变量替换、命令替换等。
EOF