Проблемы со скриптом, который распаковывает несколько заархивированных tar-файлов, а затем распаковывает одни и те же файлы в оболочке C - PullRequest
0 голосов
/ 02 апреля 2020

Я пытался написать скрипт, который будет искать в каталоге несколько заархивированных tar-файлов, разархивировать их, а затем распаковать. Однако моя проблема в том, что каждый раз, когда я запускаю скрипт, он выполняет первый оператор if then, но он не выполняет второй. Я запустил оба этих оператора в отдельных сценариях, и они оба работают независимо, но не в одном и том же сценарии. Нужно ли объединять их в операторе if then elseif? Вот что у меня есть, я ценю любую помощь.

#!/bin/csh
set x = (`find /Documents/*.gz -print`)
set v = (`find /Documents/*.tar -print`)

if ("$x" != "") 
then 
gunzip *
else
echo "No zip files found."
endif

if ("$v" != "")  then
foreach i ( $v )
tar -xvf $i
end
else
echo "No tar files found."
endif

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете сделать то же самое, просто find; вам не нужно, чтобы al oop:

find /Documents/*.gz -exec gunzip {} \;
find /Documents/*.tar -exec tar xvf {} \;

-exec запускал команду для каждого найденного файла, {} заменяется именем файла, а \; завершает команду .

...