1.shell脚本就是将命令写入文本中,文本可以被执行。
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
2.shell 既是应用程序,又是一种脚本语言(应用程序 解析 脚本语言)。
3.Bourne Again Shell (简称bash)、Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)
4.特点:shell语言是一种脚本语言,属于动态类型语言和弱类型语言
5.(1)创建目录用于存放shell脚本文件
(2).使用vim命令创建xxx.sh文件
(3)编写xxx.sh文件内容(第一行#!/bin/bash,第二行开始编写脚本代码)
6.(1)相对路径(当前目录下./a.sh 文件需要执行权限 )
(2)绝对路径(绝对路径 /test/a.sh 文件需要执行权限 )
(3)bash命令调用(用sh 或bash来执行 bash a.sh 文件不要执行权限 ---建议使用方法 )
(4)别名 ( 用source a.sh 或 . a.sh 执行会开启子shell 文件不要执行权限 )
区别:
1、方法三:可以在脚本中不指定解释器,脚本可以没有执行权限
2、方法一和方法二脚本需要有执行权限,./script_name.sh 或/path/script_name.sh bash a.sh
3、方法四:当前shell执行,方法1-3开启子shell
7.顺序、选择、循环
(1)顺序执行:逐条执行(自上而下循环执行)
(2)选择执行:代码有一个分支:条件满足时才会执行
两个以上分支:只执行其中一个满足条件的分支
(3)循环执行:代码片断(循环体)要执行0,1或多个来回
8.echo:直接输出
选项:-n 取消输出后行末的换行符号
-e 支持反斜线控制的字符转换 \n \t
printf:格式化输出
printf 命令模仿 C 程序库(library)里的 printf() 程序。
printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。
9 .; --命令的顺序执行
&&与 --前面命令执行不成功,后面的命令不执行 !id haha && useradd haha (注:&一个表示将一个进程放到后台运行)
||或--如果前面命令成功,后面就不执行,如果前面不成功后面就执行(注: |管道符 )
! 非
10.通配符:
? 匹配一个任意字符
`*` 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。
[a-z] 匹配中括号中任意一个字符, -代表一个范围。
[^a-z] 逻辑非,表示匹配不是中括号内的一个字符。
11.[:alnum:] :匹配任意一个字母或者数字 ,传统UNIX写法: a-zA-Z0-9
[:alpha:] : 匹配任意一个字母,传统UNIX写法: a-zA-Z
[:digit:] : 匹配任意一个数字,传统UNIX写法: 0-9
[:lower:] : 匹配任意一个小写字母,传统UNIX写法: a-z
[:upper:] : 匹配任意一个大写字母,传统UNIX写法:A-Z
[:space:] :空白字符
[:punct:] : 标点符号