Bash - 复合if语句

时间:2017-04-12 06:59:05

标签: bash

我正在尝试安装NPM依赖项,如果该目录不存在,但这种速记不能正常工作。

    cd $(dirname "$0")
    if [[ ! -d "node_modules/babel-plugin-transform-runtime" ]] && npm install babel-plugin-transform-runtime
    if [[ ! -d "node_modules/babel-preset-es2015" ]] && npm install babel-preset-es2015
    if [[ ! -d "node_modules/babel-preset-es2016" ]] && npm install babel-preset-es2016
    if [[ ! -d "node_modules/babel-polyfill" ]] && npm install babel-polyfill
    if [[ ! -d "node_modules/babel-preset-stage-0" ]] && npm install babel-preset-stage-0
    if [[ ! -d "node_modules/babel-preset-stage-1" ]] && npm install babel-preset-stage-1
    if [[ ! -d "node_modules/babel-preset-stage-2" ]] && npm install babel-preset-stage-2
    if [[ ! -d "node_modules/babel-preset-stage-3" ]] && npm install babel-preset-stage-3

语法错误 - Bash期待“然后” - 我该怎样做我想做的事?

1 个答案:

答案 0 :(得分:4)

您不需要 if 构造中的任何一行,

[[ ! -d "node_modules/babel-plugin-transform-runtime" ]] && npm install babel-plugin-transform-runtime

很好。由于您基于test运算符的返回代码&&运行,因此此处不需要if..then子句。如果您仍然对if子句感兴趣,可以使用经典方式

if [[ ! -d "node_modules/babel-plugin-transform-runtime" ]]; then
    npm install babel-plugin-transform-runtime
fi

并且ShellCheck经常会立即发现你的问题!