在bash函数中放置条件返回

时间:2015-01-25 10:57:10

标签: bash if-statement

我知道在return语句中可能有if [ ]。但是,返回(我认为)必须是一个整数,我需要返回一个字符串。例如:

#Function returns a date value formatted %Y-%m-%d
function chartStartsAt () {

    CHART_START=`jq 'map(.closedDate | values) | min' < output/json/FullIssueList.json`;
    CHART_START="${CHART_START//\"}"

    #Check if the date is null, if so return todays date -1
    if [ -z CHART_START ]
    then
        echo "date -v-1d +%Y-%m-%d";
    else
        echo "${CHART_START%T*}";
    fi

}

1 个答案:

答案 0 :(得分:1)

实际上,这确实有效。我错过了几件事。我在下面列出了它们。

  1. 当为null时,jq返回字符串"null",因此if语句应该检查字符串而不是实际的空值
  2. 我的第一个回音不正确,应该是echo $(date -v-1d +%Y-%m-%d);

    function chartStartsAt () {
    
    
      CHART_START=`jq 'map(.closedDate | values) | min' < output/json/FullIssueList.json`;
      #echo "${CHART_START}";
    
      CHART_START="${CHART_START//\"}"
      #echo "${CHART_START}";
    
      if [ "$CHART_START" == "null" ]
      then
          echo $(date -v-1d +%Y-%m-%d);
      else
          echo "${CHART_START%T*}";
      fi
    
    }