LINUX.ORG.RU

c awk поэксперементируй.

x13
()
Ответ на: комментарий от dubrovin_ak
#!/bin/sh
#
#  
#

TD="2019-12-29 23:47:25"
TDS=$(date -d "$TD" +%s)
TL=604800
RTD=$(( TL + TDS ))

echo TD: $TD
echo TDS: $TDS
echo TL: $TL
echo RTD: $RTD

if [ "$RTD" -le "$(date +%s)" ]; then
    echo less or equal
else
    echo more
fi
TD: 2019-12-29 23:47:25
TDS: 1577652445
TL: 604800
RTD: 1578257245
more
anonymous
()
Ответ на: комментарий от dubrovin_ak
#!/bin/bash
TIME_LIFE="604800"
TORRENTLIST=$(transmission-remote -l | sed -e '1d' -e '$d' | awk '{print $1}' | sed -e 's/[^0-9]*//g')
if [ "$TORRENTLIST" ]; then
        for TORRENTID in $TORRENTLIST 
        do
                TINFO=$(transmission-remote -t $TORRENTID -i)
                #TSTATE=$(echo -e "$TINFO" | grep -e "State: Seeding\|State: Finished\|State: Idle\|State: Stopped")
                TDATE=$(echo -e "$TINFO" | grep -e "Date finished:")
                if [ "$TDATE" ]; then
                        RTD=$(date -d "$(echo -e $TDATE | sed 's/^Date finished: //')" +%s)
                        if [ $(($RTD+$TIME_LIFE)) -le $(date +%s) ]; then
                                transmission-remote -t $TORRENTID --remove-and-delete 
                        fi
                fi
                #echo $TDATE
                #if [ $TSTATE ]; then
                #       echo $TORRENTID
                #fi
        
        done
fi

Вот весь код, в centose он работал, на дебиан ругается..

dubrovin_ak
() автор топика
Ответ на: комментарий от dubrovin_ak
echo 'Date finished: Sun Dec 29 23:47:25 2019' | sed 's/Date finished: //' | awk '{print $1",", $3, $2, $5, $4}' | date +%s -d -
1577653200
anonymous
()
Ответ на: комментарий от anonymous
date: неверная дата «-e Date finished: Sat Dec 28 14:39:21 2019»
21
date: неверная дата «-e Date finished: Sun Dec 29 23:48:38 2019»
22
date: неверная дата «-e Date finished: Sun Dec 29 23:47:25 2019»
23
dubrovin_ak
() автор топика
Ответ на: комментарий от dubrovin_ak

Мне еще и ошибки за тобой испрвлять?)

anonymous
()
Ответ на: комментарий от dubrovin_ak

date: неверная дата

Так у тебя не с date, у тебя с sed какие то траблы (проще говоря, он не срабатывает).

anonymous
()

Получать данные через RPC, там unixtime.

Radjah ★★★★★
()
Ответ на: комментарий от dubrovin_ak

И лучше так, чтобы правильно парсилу строку с пробелами

sed 's/Date finished: //' | awk '{printf "\"%s, %s %s %s %s\"",$1, $3, $2, $5, $4}' | xargs -r date +%s -d
anonymous
()
Ответ на: комментарий от dubrovin_ak

date: неверная дата «-e Date finished:

А точнее говоря, у тебя echo -e не работает. Оставь только echo (убери флаг -e).

anonymous
()
Ответ на: комментарий от dubrovin_ak

Да вот и не ура. Ты так и не додумался почитать, что я предлагал. А предлагал я нужное. Сравни

echo 'Sun Dec 29 23:47:25 2019' | date +%s -d -
1577653200

date +%s -d "2019-12-29 23:47:25"
1577652445

Ты с текущим скриптом получаешь неверное значение.

anonymous
()
Ответ на: комментарий от dubrovin_ak

ADATE=$(echo $TDATE | sed 's/^Date finished: //')
RTD=$(date -d «$ADATE» +%s)

Всё пытаюсь понять, ну откуда берутся вот такой въевшиеся в мозги алгоритм написания скриптов? Один предлагает перед awk вызывать sed, другой обрезает начало строки в переменной через echo | sed. Вы начитались книжек 50+ летнего возраста, где тогда shell-ы не умели вырезать начало строки сами? А для демонстрации силы unix-а везде пихали эти пайпы, даже там, где не надо?

RTD=$(date -d "${TDATE#Date finished: }" +%s)
vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.