Bash-скрипт работает только в пути, где находится Bash-скрипт - PullRequest
0 голосов
/ 11 октября 2018

Я хочу получить последний (самый новый) файл в каталоге.И этот скрипт работает для каталога, где у меня есть файл Bash.Когда я изменил путь к другому пути проблема в last_modified.Скрипт не видит file - думаю, но не знаю почему.Кто-нибудь может помочь?

Ниже приведен код в моем файле test.sh

#!/bin/bash

file=$(cd '/path_where_is_test.sh_file' && ls -t | head -1)
last_modified=$(stat -c %Y $file)
current=$(date +%s)

if (( ($current - $last_modified) > 86400 )); then
    echo 'Mail'
else
    echo 'No Mail'
fi;

1 Ответ

0 голосов
/ 11 октября 2018

Проблема в том, что вы используете ls после cd для определенного каталога.Вывод ls - это просто имя файла без пути.Позже вы передаете это имя файла без пути к команде stat.Если ваш текущий каталог отличается, то stat не найдет файл.

Возможные решения:

  • Добавьте каталог (dir) к stat команда

    dir='/path_where_is_test.sh_file'
    file=$(cd "$dir" && ls -t | head -1)
    last_modified=$(stat -c %Y "$dir/$file")
    
  • Использовать измененный каталог

    last_modified=$(cd '/path_where_is_test.sh_file' && stat -c %Y $(ls -t | head -1))
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...