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
|