Проверка существования файла tar | сценарий bash

Вы также можете отключить проверку gpg без редактирования файла репо с помощью этой команды:
yum install --nogpgcheck your_package

1
26.10.2020, 03:42
2 ответа

Если мы проигнорируем ту часть, где вы пропустили предложение fi, суть проблемы вращается непосредственно перед вашим вызовом tar.

Предположим, вы хотите

  • создайте архив с именем$newname

  • для записи каталога$file_dir_name

  • внутри$dir_path

Сначала вы должны cd$dir_path. Я не уверен, является ли флаг -Cпереносимым, но более новая команда paxне имеет его по очевидной причине уменьшения сложности.

Использование флага -Cприводит к другой проблеме. :Если путь $dir _указан относительный, архив будет создан не в том месте.

Причина, по которой проверка существования файла не удалась, я полагаю, что вы не перешли в каталог, который $file_nameдолжен существовать.

Затем укажите место назначения вывода в качестве имени файла архива и $file_dir_nameв качестве операндов для команды tar/pax.

Улучшенная команда:

...

#check if tar file exists already
cd "$dir_path"

if [ -f "$file_name" ]
then echo "$file_name" exists
else
  pax -w -f "$file_name" "$file_dir_name"
  ## alternatively, with tar:
  # tar cf "$file_name" "$file_dir_name"
fi

На этом этапе я хотел бы отметить, что имя переменной $file_nameслишком общее, его можно изменить на что-то вроде $tarball.

В качестве бонуса вы можете сократить имена переменных.:

  1. $wd— хорошее имя для ожидаемого рабочего каталога, оно не конфликтует ни с cd, ни сpwd

  2. Я часто использую просто $fдля файлов или просто любую "запись каталога"; аналогично $dдля операндов каталога.

0
18.03.2021, 22:59

Ключевым моментом здесь является то, что вы должны тестировать то же имя файла, которое вы создаете

#check if tar file exists already
if [ -f "$file_name" ]
then
       ...
else
        # create tar file 
        tar -cvf "$file_name"...
       ...
fi

Кроме того, нет никаких причин, по которым file_nameне может быть полным путем.

file_name="$dir_path/$new_name.tar"

Помещение каталога в имя переменной, вероятно, менее подвержено ошибкам. Может быть лучше назвать переменную tar_nameили tar_pathили что-то подобное.

0
18.03.2021, 22:59

Теги

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