变量
- 所有变量被视为字符串,并以字符串保存。即使被赋值为数值也是如此。
- 区分大小写。
- 在变量名前加$访问内容。
- 变量赋值,两边不能有空格。
- Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
- Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
条件
if [ -f /bin/bash ]
bash是否存在
if [ -d /bin/bash ]
bash是否是路径
if语法
if [ ]
then
else if [ ] ; then
else
fi
控制结构
for语法
for foo in bar fud 43 "hello ha"
do
echo $foo
done
while语法
while condition do
statements
done
case语法
casevariable in
pattern [ | pattern] ...) statements;;
pattern [ | pattern]...) statements;;
...
esac
特殊变量
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$@ | 传递给脚本或函数的所有参数 |
$? | 上个命令的退出状态,或函数的返回值 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID |
字符串比较
字符串比较 | 结果 |
---|---|
-n string | 如果字符串不为空返回true |
-z string | 如果字符串为空返回true |
wc命令
- 语法:
wc [-lwm] file
- l 统计行
- w 统计字
- m 统计字符
参数扩展
参数扩展 | 说明 |
---|---|
${param:-default} | 如果param为空,则把它设为default值 |
${#param} | 给出param的长度 |
${param%word} | 从param的尾部开始,删除与Word匹配的最小部分,然后返回剩余部分 |
${param%%word} | 从param的尾部开始,删除与Word匹配的最长部分,然后返回剩余部分 |
${param#word} | 从param的头部开始,删除与Word匹配的最长部分,然后返回剩余部分 |
${param##word} | 从param的头部开始,删除与Word匹配的最长部分,然后返回剩余部分 |