2016-04-18 7 views
0

Я хочу, чтобы gunzip имя файла, хранящегося в $ 2, в указанный каталог, хранящийся в $ 3. Например,Как удалить расширение позиционного параметра?

если [-f $ 2]; затем

Gunzip $ 2

here I want to remove .gz from $2 

мв $ 2 $ 3

фи

так из командной строки терминала при выполнении сценария I тип:

-z anotherdirectory/test.txt user/harry 

, поскольку ошибка говорит mv: не может stat 'backup/test.txt.gz': нет такого файла или каталога.

Спасибо всем!

+0

'mv' это первый и' gunzip' это второй? –

+0

При этом появляется такая ошибка: «gzip: backup/test.txt.gz: нет такого файла или каталога». Файл перемещается, но не распаковывается. –

+0

Вам нужно будет показать больше фактического кода, если вы хотите получить более конкретную помощь. Также, если вы посмотрите вокруг этого сайта, вы найдете много примеров расширения параметров, используемых для этого. –

ответ

0
 mv $(echo $2 |sed 's/\.gz$//') $3

Также вы должны проверить это tutorial about sed

+0

Привет, это говорит о неожиданном завершении файла при использовании этой строки в приведенном выше коде –

+0

Я пропустил один символ в своем первом ответе, извините. Это уже исправлено, попробуйте еще раз. – Gongora

1

Для удаления одного расширения, используйте % суффикс удаления оператора:

mv "${2%.*}" "$3" 

или если вы хотите удалить только .gz, вы можете использовать:

mv "${2%.gz}" "$3" 

Но вы могли бы избежать копий вообще по распаковке файла режиссуры, где вы хотите, чтобы пойти:

gunzip -c "$2" > "$3" 

Опция -c говорит gunzip писать на стандартный вывод. В отличие от обычного gunzip, который не удаляет файл gzip, так что после этого вы должны будете rm.

Следует отметить, что gunzip понимает другие расширения, такие как tgz; он будет распаковывать foo.tgz до foo.tar, а не foo. Таким образом, команда, которая просто удаляет расширение, не будет работать со всеми расширениями, тогда как gunzip -c будет.

+0

Ударьте меня на 19 секунд. Я пойду вперед и удалю свой пост :). – bluerojo

+0

rici, я считаю, что ваша вторая строка кода должна была читать 'mv '$ {2% .gz}" "$ 3" '. – bluerojo

+0

@bluerojo: вы правы. Я снова отредактировал его. – rici

Смежные вопросы