2015-01-25 3 views
0

Я знаю, что его можно иметь return в заявлении if [ ]. Однако возврат (я думаю) должен быть целым числом, и мне нужно вернуть строку. Например:Размещение условного возврата внутри функции bash

#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 

} 
+0

http://m.linuxjournal.com/content/return-values-bash-functions –

+0

Это ссылки идут непосредственно на linuxjournal.com. Я все понял. Спасибо @PaulR – TheMightyLlama

ответ

1

Собственно, это действительно работает. Мне не хватало двух вещей. Я перечислил их ниже.

  1. При нулевой, JQ возвращает строку "null", в результате, если заявление должно быть проверка на строку не фактического значения нулевой
  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 
    
    } 
    
Смежные вопросы