Я почти новичок в скрипте оболочки, но не знаю некоторых команд. Я пытаюсь написать ниже сценарий оболочки, пожалуйста, дайте некоторое направление. 1. Прочтите * .gz файлы из определенного каталога 2. Извлеките его в другую папку 3. Переместите исходный файл в другую папку. Я могу сделать это три отдельных сценария оболочки, но я хочу, чтобы он включал один скрипт оболочки. Тогда этот скрипт будет cronjob и будет запускаться каждые 5 минут. Я пытался начать, как показано ниже, но почему-то я немного смущен, как получить файл списка. Я могу здесь сделать еще один сценарий, но хотите включить в один сценарий «О: извлечение * .gz файлов и перемещение исходного файла в другую папку
#!/bin/bash
while IFS= read file; do
gzip -c "$file" > "zipdir/$(basename "$file").gz"
done < filelist
-----------------------------------------
PS:. Файлы создаются в каждые 5 минут
Спасибо очень много, это а не gzip, это должно быть gunzip право на экстракт? и просто не понимаю товарt -s nullglob и магазинt -u nullglob. (не удаляйте неиспользуемые пути) – user347918
Предположим, что ваш «исходный» каталог (тот, который содержит исходные .gz-файлы, пуст). В этом случае цикл for возвращает неэкспонированный источник $ */gz (со звездочкой) и, конечно же, и gzip, и mv будут жаловаться на него. Установив флаг «nullglob» с помощью 'shoot -s nullglob', мы предотвращаем возврат нерасширенного (несуществующего) пути. Другая команда в конце 'shoot -u null glob 'сбрасывает этот флаг по умолчанию. – mauro
re-gunzip: моя команда правильная, потому что я использовал параметр '-d' (распаковать) (" gunzip "=" gzip -d "). – mauro