脚本报错继续执行 (脚本只执行一遍第二遍就会不执行)

当在shell脚本中执行错误命令时,如果该命令的退出状态码(exit code)不为0,则shell会认为命令执行失败,并立即停止脚本的执行。

然而,在命令执行后添加 $? 的作用是获取上一个命令的退出状态码, 即shell会将上一个命令的退出状态码赋值给 $? 变量 。因此,在脚本中,可以通过检查 $? 的值来确定上一个命令是否成功执行。

因此,如果在脚本中检查了上一个命令的退出状态码,并根据它来决定如何继续执行脚本,即使之前执行的命令失败了,脚本也可以继续执行。

shell自带的变量

$0: 当前脚本的名称
$1, $2, $3, ...: 脚本的参数,以数字表示,例如 $1 表示第一个参数,$2 表示第二个参数,以此类推。
$#: 脚本参数的数量。
$@: 脚本的所有参数,以字符串的形式返回,每个参数之间用空格分隔。
$*: 脚本的所有参数,以字符串的形式返回,每个参数之间用IFS环境变量中的第一个字符分隔。
$?: 上一个命令的退出状态码(exit code),0 表示成功,非0 表示失败。
$: 当前进程的进程号(PID)。
$!: 最近一个在后台运行的进程的进程号。
$IFS: 内部字段分隔符(Internal Field Separator),用于指定 $* 和 $@ 中参数之间的分隔符,默认为空格、制表符和换行符。
$PWD: 当前工作目录的路径。
$OLDPWD: 上一个工作目录的路径。
$USER: 当前用户的用户名。
$HOME: 当前用户的主目录的路径。
$SHELL: 当前正在使用的shell的路径。
$BASH_VERSION: Bash版本号。