shell & bash

命令序列 lists of commands

命令序列是由;&&&或者||运算符分隔的一个或多个管道序列。

如果一个命令以&结尾,shell将会在一个子shell中异步执行这个命令。换句话说,这个命令将会在后台执行。

# 异步执行
command &

;分隔的命令将会依次执行:一个接着一个。shell会等待直到每个命令执行完。

# command2 会在 command1 之后执行
command1 ; command2

# 等同于这种写法
command1
command2

&&||分隔的命令分别叫做 序列。

与序列 看起来是这样的:

# 当且仅当command1执行成功(返回0值)时,command2才会执行
command1 && command2

或序列 是下面这种形式:

# 当且仅当command1执行失败(返回错误码)时,command2才会执行
command1 || command2

序列的返回值是序列中最后一个执行的命令的返回值。

实际会遇到的问题

在使用 webpack 或者其他脚本时,会遇到下一个命令不执行的情况,那是因为上个命令没有结束进程。

// 对于本地的脚本: 可以使用  process.exit(0) 来结束当前进程。   https://nodejs.org/api/process.html#process_event_exit
process.exit(0)

// 对于第三方工具: 怎么解决呢? 使用 npm 再包装一层

"scripts": {
   "webpack": webpack ..., 
   "command2": command2 ...,
   "success": npm run webpack && npm run command,   // 成功
   "fail": webpack ... && npm run command  // 失败
 }