1

Мне нужно распаковать файл в моем скрипте nodejs:

var exec = require('child_process').exec;

var execOptions = { timeout: 15000 };

exec('bash unzip.sh', execOptions, function (error) {
   ...
});

В unzip.sh я делаю:

set -e
unzip my_file.zip -d /var/tmp/my_dir

Целевой каталог имеет некоторые ограничения квоты для своего размера. И иногда я получаю:

write error (disk full?).  Continue? (y/n)

И затем через 15 секунд exec() завершается с ошибкой по таймауту (это нормально).

Как я могу распаковать unzip, чтобы он не запрашивал пользователя и немедленно завершался с ошибкой, чтобы избежать тайм-аута 15 секунд?

Я попытался unzip my_file.zip -d /var/tmp/my_dir 2> /dev/null но это не работает.

2 ответа2

2

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

/bin/echo "n" | /usr/bin/unzip -o $zipfile -d $dir

Он отправит "n" в ответ на вопрос о распаковке.

0

Я бы рекомендовал обратиться к параметрам, которые можно установить с помощью команды unzip. Поэтому наберите man unzip или unzip --help .

В основном опция -f заставляет операцию без запроса вас. Опция -q уменьшает вывод. Сочетание этих двух и, возможно, некоторых других вариантов, которые вы найдете в упомянутой выше ссылке, может помочь вам получить правильные варианты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .