Skip to main content

Shell 脚本

脚本格式

#!/bin/bash

变量

常用系统变量

  • $HOME
  • $PWD
  • $SHELL
  • $USER
$ echo $HOME
/home/morven

自定义变量

变量=值

tip
  • 变量名可以由字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写
  • 等号两侧不能由空格
$ num=10
$ echo $num
10
tip
  • 变量使用 $ 取值
  • export 可以将变量提升为全局环境变量

特殊变量

  • $n : n 为数字,$0 代表该脚本名称,$1 - $9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 ${10}
  • $# : 获取所有输入参数个数,常用于循环
  • $* : 代表命令行中所有的参数,$* 把所有的参数看成一个整体
  • $@ : 代表命令行中所有的参数,不过 $@ 把每个参数区分对待
  • $? : 最后一次执行的命令的返回状态。如果这个变量的值为 0 ,表明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则表明上一个命令执行错误

运算符

$((运算式))$[运算式]

$ v=$[(2+3)*4]
$ echo $v
20

条件判断

[ condition ]

caution

condition 前后有空格!

比较

  • = : 判断字符串是否相等
  • -lt : less than
  • -le : less equal
  • -eq : equal
  • -gt : greater than
  • -ge : greater equal
  • -ne : not equal

权限

  • -r : read 读权限
  • -w : write 写权限
  • -x : execute 执行权限

文件类型

  • -f : file 文件且存在
  • -e : existence 存在
  • -d : directory 目录且存在

流程控制

if

if [ condition ]; then
...
fi
if [ condition ]
then
...
elif
then
...
fi
caution
  • [ condition ] 要有空格
  • if 后要有空格

case

case $变量 in
"value1")
...
;;
"value2")
...
;;
*)
...
esac

for

用法1

for((i=0;i<=100;i++))
do
...
done

用法2

for $val in value1 value2 value3
do
...
done

while

while [ condition ]
do
...
done