Вы также можете отключить проверку gpg без редактирования файла репо с помощью этой команды:yum install --nogpgcheck your_package
Если мы проигнорируем ту часть, где вы пропустили предложение 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
.
В качестве бонуса вы можете сократить имена переменных.:
$wd
— хорошее имя для ожидаемого рабочего каталога, оно не конфликтует ни с cd
, ни сpwd
Я часто использую просто $f
для файлов или просто любую "запись каталога"; аналогично $d
для операндов каталога.
Ключевым моментом здесь является то, что вы должны тестировать то же имя файла, которое вы создаете
#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
или что-то подобное.