Получение пустой строки в качестве вывода команды Linux для поиска по каналу zypper при выполнении ее в ruby ​​с использованием обратных галочек или Mixlib::ShellOut

Я пытаюсь запустить конвейерную команду Linux в ruby, заключив ее в backticks`` и используя Mixlib::ShellOut. Но в обоих случаях я получаю пустую строку в качестве вывода, хотя фактический вывод выглядит следующим образом: i | kernel-default-devel | пакет | 3.0.101-108.21.1 | x86_64 | SLES11-SP4-Updates

На самом деле, команда поиска zypper отобразит вывод в виде таблицы.

Я использую команду zypper search -s kernel | grep -P '(^|\s)\Kkernel-default-devel(?=\s|)' | grep (rpm -qa | grep kernel-default-[0-9] | sort -Vr | head -1 | cut -c 16- | awk '{print substr($0, 1, длина ($0)-7)}')

Код для Mixlib:: ShellOut приведен ниже.

current_package_cmd = "zypper search -s kernel | grep -P '(^|\s)\Kkernel-default-devel(?=\s|$)' | grep $(rpm -qa | grep kernel-default-[0-9] | sort -Vr | head -1 | cut -c 16- | awk '{print substr($0, 1, length($0)-7)}')"
cmd = Mixlib::ShellOut.new(current_package_cmd )
cmd.run_command 
current_package = cmd.stdout
status = cmd.exitstatus
log "current package is #{current_package} and status is #{status}"

Значением выходной переменной current_package является пустая строка, а exitstatus равно 1.

Пожалуйста, посоветуйте, как решить проблему.

0 ответов

Другие вопросы по тегам