Hello World
- 创建脚本
 
- 授权
 
默认是没有执行权限的
1 2
   | ➜  shell ./hello.sh zsh: permission denied: ./hello.sh
   | 
 
查看现有权限
1 2 3
   | ➜  shell ll total 0 -rw-r--r--  1 cuishiying  staff     0B  3 24 11:50 hello.sh
   | 
 
| 权限说明 | 
文件类型 | 
用户u | 
用户组g | 
其他用户o | 
说明(全部a) | 
| 位说明 | 
1 | 
2-4 | 
5-7 | 
8-10 | 
共10位(+增加权限, -减少权限) | 
| 字符说明 | 
-/d | 
rwx | 
r– | 
rw- | 
-文件,d目录|r可读,w可写,x可执行,-无权限 | 
| 数字 | 
无 | 
111=7 | 
100=4 | 
110=6 | 
出现字符(r、w、x)为1,出现-为0 | 
根据上述权限说明,hello.sh是文件,当前用户有读写权限,无可执行权限,所以需要授权才能执行。
- 编辑脚本
 
1 2
   | #! /bin/bash echo "Hello World"
   | 
 
 Shell变量
变量一般用到自定义变量和环境变量。
- 自定义变量
 
1 2 3 4
   | #! /bin/bash hello="Hello World" echo $hello echo "$hello"
   | 
 
- 字符串
 
获取字符串长度
1 2 3
   | #! /bin/bash hello="Hello World" echo ${#hello}
   | 
 
- 数组
 
1 2 3 4 5 6 7 8 9 10
   | #!/bin/bash array=(1 2 3 4 5); # 获取数组长度 length=${#array[@]} #输出数组长度 echo $length #输出:5 # 输出数组第三个元素 echo ${array[2]} #输出:3 unset array[1] # 删除下标为1的元素也就是删除第二个元素 for i in ${array[@]};do echo $i ;done # 遍历数组,输出: 1 3 4 5
   | 
 
 Shell流程控制
- if条件
 
1 2 3 4 5 6 7 8 9 10 11 12
   | #!/bin/bash a=3; b=9; if [ $a -eq $b ] then    echo "a 等于 b" elif [ $a -gt $b ] then    echo "a 大于 b" else    echo "a 小于 b" fi
   | 
 
- for循环
 
1 2 3 4
   | for loop in 1 2 3 4 5 do     echo "The value is: $loop" done
   | 
 
 Shell函数
- 无参无返回值
 
1 2 3 4 5 6 7
   | #!/bin/bash hello(){     echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" hello echo "-----函数执行完毕-----"
   | 
 
- 有返回值有参数
 
1 2 3 4 5 6 7 8 9
   | #! /bin/bash test(){     echo "第一个参数 $1"     echo "第二个参数 $2"     # 只能返回数字     return $(($1+$2)) } test 1 2 echo "结果为 $?"
   | 
 
 查询日志
1
   | grep "xxx" xxx.log | wc -l
   |