Как с помощью скрипта вычесть число из текстового файла с датой + число %s?

Это редкий случай, когда отставание /важно. Во многих командах указание fooи foo/идентично. Но у него есть семантическая разница. В некоторых командах, включая rsync, замыкающий /указывает команде выполнить особое действие, основанное на том факте, что это каталог. Если у вас возникла ситуация, созданная...

mkdir foo bar
touch foo/baz

... и вы хотите скопировать содержимое из foo в bar, тогда НЕ указывайте...

rsync -rv foo bar

... вместо этого укажите...

rsync -rv foo/ bar

В противном случае rsync решит, что вы хотите скопировать все дерево (, включая родительский каталог ), в целевой каталог, как вы нашли.


Другим примером с подобной эффективной семантикой является lsпри перечислении ссылок:

mkdir foo
touch foo/baz
ln -s foo bar

ls -l bar
lrwxrwxrwx 1 philip philip 3 May  7 14:58 bar -> foo

ls -l bar/
total 0
-rw-r----- 1 philip philip 0 May  7 14:58 baz
0
25.03.2021, 16:31
1 ответ

Если в файле есть только эта метка времени и нет другого содержимого, проще использовать подстановку команд($(...))для чтения всего файла. Точно так же вы можете взять вывод date +%s. Арифметика может быть выполнена внутри $((.. )).

t1=$(date +%s)
t0=$(cat datefile)
echo $(( t1 - t0 ))
0
28.04.2021, 22:56

Теги

Похожие вопросы