2017-10-05 50 views
1

我想運行此命令source .env(採購.env文件),並且如果.env文件在採購時出現了一些錯誤。我想在錯誤輸出「嘿,你的.env中有錯誤」之前顯示一條消息,否則如果沒有錯誤,我不想顯示任何內容。如何在採購它之前對shell腳本進行語法檢查?

這裏需要編輯的一個代碼示例:

#!/bin/zsh 

env_auto_sourcing() { 
    if [[ -f .env ]]; then  

    OUTPUT="$(source .env &> /dev/null)" 
    echo "${OUTPUT}" 

    if [ -n "$OUTPUT" ]; then 
     echo "Hey you got errors in your .env" 
     echo "$OUTPUT" 

    fi 
} 
+1

http://shellcheck.net/也可下載/安裝的軟件,而且比'慶典-n'更加全面。 –

回答

2

你可以使用bash -nzsh有了一個-n選項也一樣)的語法採購前檢查你的腳本:

env_auto_sourcing() { 
    if [[ -f .env ]]; then 
    if errs=$(bash -n .env 2>&1); 
     then source .env; 
    else 
     printf '%s\n' "Hey you got errors" "$errs"; 
    fi 
    fi 
} 

貯藏文件中的語法檢查錯誤比您在代碼中使用的子shell方法稍微清晰一些。

bash -n有幾個陷阱如下所示:

+2

我會考慮一個命令替換,即。 'if errs = $(bash -n .env 2> &1); then source .env; else printf'%s \ n'「嘿,你有錯誤」「$ errs」; fi',避免臨時文件。 –

相關問題