Shebang
shebang
表示文本文件中第一行前连个字符#!
1 2 3 4 5 6
| histroy -c 清楚记录 -r 恢复记录
!历史id 快速执行历史命令 !! 执行上一条命令
|
变量
变量赋值等于号不能有空格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $0 脚本名称和脚本路径
$n 脚本的第n个参数
$# 脚本参数的总数
$* 所有脚本参数
$@ 所有脚本参数
$? 上次命令的返回码
\$$ 当前脚本的进程号
$! 上一次后台进程的pid
$_ 在此执行前一个脚本的最后变量
|
bash一些基础命令
echo
1 2 3 4 5 6 7 8 9 10 11
| -n 不换行输出
-e 解析字符串中的特殊符号
\n 不换行
\r 回车
\t 制表符
\b 退格
|
eval 执行多个命令
exec 不创建子进程执行后续命令,且执行完毕后,自动exit
shell 子串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ${变量} 返回变量值
${#变量} 返回变量长度,字符长度
${变量:start} 返回start数值之后的字符
${变量:start:length} 提取start之后的length个字符
${变量#word} 从变量开头删除最短匹配的word子串
${变量##word} 从变量开头删除最长匹配的word子串
${变量%word} 从变量结尾删除最短匹配的word子串
${变量%%word} 从变量结尾删除最长匹配的word子串
|
${变量/pattern/string} 用string替换第一个pattern
${变量//pattern/string} 用string替换所有pattern
for循环
1 2 3 4 5 6 7 8 9 10 11
| for item in items
do
shell脚本
done
for n in {1..3} // 循环遍历三次
|
shell拓展变量
1 2 3 4 5 6 7
| ${name:-word} 如果name变量值为空,返回word字符串,可以被赋值
${name:=word}如果name变量为空,用word替代变量值,且返回其值
${name:?word} 如果name变量为空,返回word,否则返回变量值
${name:+word} 如果name变量为空,什么都不做,否则返回word返回
|
数值计算
(())
函数
函数名称(){
}