2015-08-13 2 views
0

Я пытаюсь выполнить скрипт, который проверяет файлы .tar.gz. Это часть сценария:В чем разница между этими двумя синтаксисами?

def tar 
    tar_file = %x(ls -t *.tar.gz | head -1) 
    if tar_file.empty? 
     critical "No tar.gz found" 
    end 
    tar_file.chomp 
    command = "gunzip -c backup.tar.gz | tar t > /dev/null" 
    system(command) 
    end 

Это работает отлично, но я не знаю, мое имя резервного копирования, поэтому мне нужно, чтобы заменить его переменной. В этом случае это моя переменная tar_file. Так это дает мне:

command = "gunzip -C#{tar_file} | tar t > /dev/null" 

Но когда я исполню это, у меня есть вывод команды tar, он не делает reddirection в/DEV/нуль.

Знаете ли вы, почему это так?

+1

Имеет ли файл пробелы? Строка выглядит хорошо для меня, когда я пытаюсь. Оберните '# {tar_file}' в одинарных кавычках или с двойными кавычками. – casraf

+0

Нет, это не так, имя файла - backup.tar.gz. И одиночные или экранированные двойные кавычки не работают. –

+1

Когда вы выводите значение 'command', что вы видите? – casraf

ответ

0

Был \n в конце tar_file, поэтому я просто вызвал метод tar_file.chomp!, чтобы удалить его.

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