2017-04-12 105 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會引起你的問題的時候了!