1、set -ue

  • -e 遇到错误不执行后续命令
  • -u 未定义的变量调用报错

2、printf

按照指定格式打印

  1. printf "%s\n" 1 2 3 4
  2. 1
  3. 2
  4. 3
  5. 4
  6. printf "%s %s\n" 1 2 3 4
  7. 1 2
  8. 3 4

3、字符串匹配

3.1、通配符匹配

  1. # 匹配文件名末尾是否为log
  2. [[ "$FILE" == *.log ]]
  3. # 匹配文件名末尾是否不为log
  4. [[ "$FILE" != *.log ]]

3.1、正则表达式匹配

  1. # 匹配文件名是否已log结尾
  2. [[ "$FILE" =~ \.log$ ]]
  3. # 判断变量是否为纯数字
  4. [[ "$N" =~ ^[0-9]+$ ]]

4、命令中的()和{}

  1. # ()会开启子shell进程
  2. name=zhangsan;(echo $name;name=lisi;echo $name);echo $name
  3. zhangsan
  4. lisi
  5. zhangsan
  6. # {}不会开启子shell进程
  7. name=zhangsan;{ echo $name;name=lisi;echo $name; };echo $name
  8. zhangsan
  9. lisi
  10. lisi