1: Shell 脚本查错

1.1 set -u

  • 执行脚本时,如果遇到不存在的变量,Bash 默认忽略它;
  • set -u 就用来改变这种行为。脚本在头部加上它,遇到不存在的变量就会报错,并停止执行;
1
2
3
4
5
#!/usr/bin/env bash
set -u

echo $a
echo bar
  • 运行结果如下:
1
2
3
4
$ bash script.sh
bash: script.sh:行4: a: 未绑定的变量
# 可以看到,脚本报错了,并且不再执行后面的语句
#
  • -u 还有另一种写法 -o nounset ,两者是等价的;
  • set -o nounset

1.2 set -x

  • set -x 用来在运行结果之前,先输出执行的那一行命令;
  • -x还有另一种写法-o xtrace;

1.3

1.4 Bash 的错误处理

  • [[ -d $dir_name ]] && cd $dir_name && rm *: 先判断目录存在,再删除;
  • bash 的-x参数可以在执行每一行命令之前,打印该命令;

1.5 set -e

1.6 其他参数

  • set 命令还有一些其他参数。

    • set -n:等同于 set -o noexec,不运行命令,只检查语法是否正确。
    • set -f:等同于 set -o noglob,表示不对通配符进行文件名扩展。
    • set -v:等同于 set -o verbose,表示打印 Shell 接收到的每一行输入。
    • set -o noclobber:防止使用重定向运算符>覆盖已经存在的文件。 上面的-f 和-v 参数,可以分别使用 set +f、set +v 关闭。

2: 设置文本颜色

  • 默认情况下,命令提示符是显示终端预定义的颜色。Bash 允许自定义提示符颜色。
  • 使用下面的代码,可以设定其后文本的颜色。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
\033[0;30m:黑色
\033[1;30m:深灰色
\033[0;31m:红色
\033[1;31m:浅红色
\033[0;32m:绿色
\033[1;32m:浅绿色
\033[0;33m:棕色
\033[1;33m:黄色
\033[0;34m:蓝色
\033[1;34m:浅蓝色
\033[0;35m:粉红
\033[1;35m:浅粉色
\033[0;36m:青色
\033[1;36m:浅青色
\033[0;37m:浅灰色
\033[1;37m:白色

3: 设置 background color

1
2
3
4
5
6
7
8
\033[0;40m:蓝色
\033[1;44m:黑色
\033[0;41m:红色
\033[1;45m:粉红
\033[0;42m:绿色
\033[1;46m:青色
\033[0;43m:棕色
\033[1;47m:浅灰色