Передача переменной bash в файл python

Следующий скрипт отобразит список «новых файлов» и «старых файлов» в каталоге. Под «новыми файлами» подразумеваются файлы, которые были изменены после последнего запуска скрипта, а под «старыми файлами» подразумеваются не измененные с момента последнего запуска скрипта.

Сценарий записывает выходные данные dateв «файл отметки времени» и использует этот файл при следующем запуске, чтобы определить, какие файлы были изменены. при первом запуске вывод не производится.

Сценарий следует запускать вручную, и, поскольку он написан, он даст вам только возможность определить, какие файлы были изменены в определенном каталоге.

#!/bin/sh

topdir=$HOME  # change this to point to the top dir where your files are

stamp="$topdir/timestamp"

if [ -f "$stamp" ]; then
    echo 'New files:'
    find "$topdir" -type f ! -name timestamp -newer "$stamp"

    echo 'Old files:'
    find "$topdir" -type f ! -name timestamp ! -newer "$stamp"
fi

date >"$stamp"

Можно изменить на

  • предложить пользователю удалить старые файлы,
  • обнаруживать только файлы, соответствующие определенному шаблону (с помощью -name 'pattern', например. -name 'A156.1.[abxyz]'),
  • посмотрите время изменения инода ("ctime" )вместо времени модификации (используйте -cnewerвместо -newer, если ваш findподдерживает это ),
  • и др.
0
10.12.2019, 20:14
1 ответ

Самый простой способ «экспортировать» переменную оболочки dbв программу, которую запускает скрипт, — это передать ее в качестве аргумента, а затем команда python сможет прочитать ее из sys.argv.

Это может выглядеть так:

while IFS= read -r db
do
printf  "%s\n" "${db} Found"
python -c 'import sys; print("db: %s" % sys.argv[1])' "$db"
done < path/to/file.txt
1
28.01.2020, 02:38

Теги

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