变量
定义一个变量:a=123(等号前后不能有空格)
变量取值:$var 或者 ${var}
第二种表示有必要吗?
num=2
echo $numnd # 错误
echo ${num}nd # 正确
注意区别:$(cmd)等同于`cmd`,脚本会执行cmd并将结果替换整个表达式(包括cmd外面)
环境变量
如 PATH
export PATH=/usr/local/sbin:$PATH
参数
脚本可以看做是命令的集合,一个“大”命令
- $0 本命令的名称(全路径)
- $$ 本命令的pid
- $? 上一个命令退出时的返回值
- $! 上一个命令的pid
- $# 参数个数
- $3 第3个参数
所有参数
$* 等价于 "$1 $2 ... "
$@ 等价于 "S1" "S2" ...
复合语句(命令)
用;分割
用换行符也可以分割命令,所以分号就可以省略了
控制语句
test expression 等价于 [ expression ](中括号和表达式间的空格不能省略)
返回true/false
分支
if false; then echo yes; else echo no; fi
if false;then echo yes;else echo no;fi (分号后空格可有可无)
if false;then echo yes;else echo no;echo no;fi(多加一条命令也是可以的)
if [ true ];then echo yes;fi(试着换上[ expression ])
if ...;then ...;elif ...;then ...;else ...;if (完整的if语句)
循环
while ...; do ...; done
for x in 1 2 3; do echo x is $x; done
关于引号
单引号('):任何东西括起来都是普通字符
双引号("):只有 $ \ ' " ` 五个字符有特殊功能
反引号(`):里面的是命令,结果替换整个`...`,包括`(前面说过了)
&&
左边如果是真,则继续执行右边
管道
| 左边输出作为右面输入
> 覆盖旧文件
>> 尾部追加
通配符
*