2017-04-12 102 views
0

我试图安装NPM依赖项,如果该目录不存在,但是这种简写不能正常工作。Bash - Compound if语句

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期待一个“那么” - 我该怎么做我想做的事?

回答

4

你不需要如果结构在任何这些线路的,

[[ ! -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会引起你的问题的时候了!