为什么要学shell?能做什么?
答:CI/CD 持续集成,自动化部署作业方式,需要将一系列linux命令程序化,shell 就能做到,提高运维人员的工作效率。
定义变量, 等号左右不能有空格,if的中括号刚好相反,if[ "x" = "y" ]
name="ldj"
获取变量
${name} 或 $name
特殊变量
$0 获取shell脚本的文件名,以及脚本路径
$n 获取输入第n个参数,输入参数是用空格分割
$# 获取输入参数的个数,一般用作if判断条件
$ @ 以空格分割,获取每一个输入的参数$* "$*" 将输入所有参数作为一个整体参数,若没有双引号,则效果同$@
常用参数
-f (find,判断是否存在文件)
-d (判断目录是否存在)
-x (判断文件是否有执行权限)
-n (notnull, 判断不为空)
-a (and,并且)
-o (or , 或者)
简写if-els
[ "${name}" = "ldj" ] && echo yes || echo no
[ -f "hello.sh" ] && echo yes || echo no
[ -f "hello1.sh" -a -f "hello2.sh" ] && echo yes || echo no
比较符号
Bash 在线工具 | 菜鸟工具 (jyshare.com)
- #!/bin/bash
- echo 'Hello World!'
-
- a=100
- b=100
-
- if [ $a -gt $b ]
- then
- echo "a大于b"
- elif [ $a -lt $b ]
- then
- echo "a小于b"
- else
- echo "a等于b"
- fi
-
-
- # 遍历数组
- array=("a" "b" "c")
-
- for elem in "${array[@]}"
- do
- if [ $elem = "a" ]
- then
- echo "我是"$elem
- elif [ $elem = "c" ]
- then
- echo "我是"$elem
- else
- echo "我是ldj"
- fi
- done