Команда Untar работает в терминале, но не в скрипте bash - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь загрузить некоторый опубликованный набор данных c из inte rnet и распаковать его. Я делаю это в al oop, так как я хотел бы загрузить несколько файлов .tar.gz, поместить их в папку и распаковать их все. Загрузка работает, и команда tar работает в терминале, но не в моем скрипте bash. Я не понимаю это противоречивое поведение.

#!/bin/sh

PATH="$(pwd)/data"
cd $PATH

/usr/bin/curl "https://s3.eu-central-1.wasabisys.com/aicrowd-public-datasets/myfoodrepo/round-2/val.tar.gz" --output val.tar.gz

for file in *.tar.gz
do
    /bin/tar zxf $file
done

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Использование «PATH» в качестве имени переменной перезаписывает существующую переменную среды. Это приводит к тому, что tar не находит то, что ему нужно (gzip или bzip2 et c.)

0 голосов
/ 12 февраля 2020

Вы пытаетесь использовать sh в сценарии, но, похоже, вы работали с bash в своем терминале. Проверьте, работает ли это:

#!/bin/bash

directory="$(pwd)/data"
cd $directory

curl "https://s3.eu-central-1.wasabisys.com/aicrowd-public-datasets/myfoodrepo/round-2/val.tar.gz" --output val.tar.gz

for file in *.tar.gz
do
    tar zxf $file
done

Дайте мне знать, если это поможет!

Примечание:

Я также удалил абсолютные пути, поскольку они не нужны, и измените имя ваша PATH локальная переменная для каталога, поскольку PATH уже точно является переменной в вашей среде.

...