1、执行
.filename 或者 source filename
2、变量
使用变量:变量前加$;{}解释边界
只读变量:readonly var_name
删除变量:unset var_name
读取变量:read var_name
3、字符串
双引号&单引号:双引号内均翻译,单引号内存在单引号翻译内部
获取字符串长度:${#string_name}
提取字符串:${string_name:start:length}
4、数组
定义数组:数组名=(值1 值2 ... 值n)
读取数组:${数组名[下标]} 全部:${数组名[@或*]}
获取数组长度:${#数组名[@或*]}
5、注释
单行注释:#
多行注释:开始:<<任意字符 结尾:对应数字
6、参数传递
./test.sh 参数1 参数2 参数3
$n:第n个参数,第0个为文件名
$#:参数传递的个数
$*:显示全部参数 $@:引号中返回每个参数
$$:显示进程号
7、基本运算符
(取反>算术>条件>逻辑>赋值运算符)
算术运算符:expr表达式计算工具
表达式和运算符之间有空格 表达式用``反引号包含
例:`expr $a + $b` (let i=$i+1)
数字关系运算符
-eq等于 -ne不等于 -gt大于 -lt小于 -ge大于等于 -le小于等于
例:[$a -eq $b]
布尔运算符:!非 -o或 -a与
逻辑运算符:&&与 ||或
例:[[$a -lt 100 && $b -gt 100]]
字符串运算符:
=相等;!=不相等;>;<;
-z是否长为0;-n是否长不为0;$是否不为空
文件测试运算符
-b是否块设备文件 ; -c是否字符设备文件 ; -d是否目录 ; -f是否普通文件 ; -r是否可读 ; -w是否可写 ; -x是否可执行 ; -s是否为空 ; -e是否存在
例:[-b $file]
8、输出
echo:变量前加$,字符串可加””可不加
开启转义:echo -e
定向至文件:echo “string” > file
显示命令执行结果:echo ‘date’
printf:printf “format_string” var/figure
%-ns 左对齐n字符大小的字符串
9、转义符
\n换行 ; \r回车 ; \f换页 ; \\反斜杠 ; \c不换行
10、测试
test expression或[ expression ] :条件成立为0否则为非0值
11、条件与循环
if:if… then
elif… then
else
fi
for:for var in item1 item2…itemN // 或 for((;;))
do
done
while:while…
do
done
until:until…
do
done
case:case var in
mode1) … ;;
*) …
esac
12、函数-参数传递
fun(){ … return int }
13、重定向
默认:标准输入文件stdin(文件描述符0) ; 标准输出文件stdout(1) ;标准错误文件stderr(2)
输出重定向
Command >(>>) file 覆盖(追加)的方式输出重定向到file
Command 2>(>>) file 覆盖(追加)的方式错误信息重定向到file
Command >(>>) file 2>&1 覆盖(追加)的方式输出和错误信息保存到file
输入重定向
Command <file 覆盖(追加)的方式file输入到命令行
Command <<END END 以END作为键盘输入的结束标志(自定义)
禁止输出:重定向到/dev/null
14、others
“”包含字符串
(())包含表达式,自动解析变量名,前加$表示表达式结果赋值
[[]]包含表达式,需要空格,不能转义,不存在-o -a逻辑运算