1,一些特殊符号,如$$, $0, $1, $@
$# — shell脚本的参数个数(不算$0)
$0 — shell本身的文件名
$1~$n — 添加到shell的各参数值,$1是第一个参数,$2是第二个参数值…
$@ — 全部参数列表
$$ — shell本身的PID
$! — shell 最后运行的后台process 的PID
2,if语句
if的基本语法:
if [ command ]; then
xxxxx
elif [ command ]; then
xxxxx
else
xxxxx
fi
注:[ command ]中间的命令语句两侧需要空格,不能直接接着[]写;
一些常用的判断命令:
字符串:
-z: 当字符串长度为0时为真
-n: 当字符串长度不为0时为真
str1 = str2: 字符串1与字符串2相等
str1 != str2:字符串1与字符串2不相等
str: 字符串不为空
数值:
-eq: 两数相等
-ne: 两数不等
-gt: 大于
-ge: 大于等于
-lt: 小于
-le: 小于等于
文件、文件夹:
-d DIR: 判断DIR是否为目录
-e File: 判断file是否存在
复杂逻辑:
-a: and
-o: or
!: not
3,定义变量
最简单的变量定义方式:
a=“abc”
a=100
可以将任何值(字符串、整数)赋给变量,事实上,shell中变量的值都是按照字符串来存储的,需要数值的时候,只是将字符串按照数值处理;
获取变量的值
$a
清除变量
unset a
题外话—source shell脚本中的变量设置
正常情况下,shell脚本的执行是启动一个新的shell环境来执行,在shell脚本中设置的变量当脚本执行完成后,退出了执行的shell,在当前shell中变量是无效的(未设置的)
如果想在shell脚本中设置的变量作用到当前shell环境,则需要使用source命令,source会在当前shell中直接执行,而不启动新的shell,source命令可简化为. (dot)
source ./set_var.sh
. ./set_var.sh
4,function
基本语法:
[function] sum()
{
xxxxx
return xx
}
函数内获取参数为$1 $2…
调用方式:sum 2 3
获取返回值$?