Конвертировать строку в дату и выполнить сравнение даты в сценарии оболочки - PullRequest
0 голосов
/ 26 сентября 2018

Я новичок в сценарии оболочки и пытаюсь сделать следующее:

if [[ $($last_update_date) -ge '2018-09-20' ]]; then
   echo "hello";
fi

last_updated_date похоже на 2018-09-01.Мне нужно сравнить это с конкретной датой и выполнить какую-нибудь операцию git.

Любая помощь?

for branch in $(git branch -r | sed 's/^\s*//'); do 

    ## Info about the branches before deleting
    echo branch: $branch;
    hasAct=$(git log --abbrev-commit --pretty=format:"%ad" --date=relative -1 $branch); 
    lastActivity=$(echo "$hasAct" | grep Date: | sed 's/Date: //');

    last_updated_date=$(git log --pretty=format:"%ad" --date=short -n 1 $branch);

    echo "$last_updated_date";
    echo "$hasAct";

    if [[ $($last_update_date) -ge '2018-09-20' ]]; then
       echo "hello";
    fi
    ## Delete from the remote
    ##git push origin --delete $k
done

1 Ответ

0 голосов
/ 26 сентября 2018

-ge выполняет числовое сравнение, но дата типа 2018-09-20 не является числом.Но дату в формате YYYY-MM-DD можно сравнить лексикографически, поэтому вы можете попробовать это:

if [[ $last_update_date > '2018-09-20' ]]; then
   echo "hello";
fi

Или, если не использовать sh вместо bash:

if [ "$last_update_date" \> '2018-09-20' ]; then
   echo "hello";
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...