Получение пустой строки в качестве вывода команды 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.
Пожалуйста, посоветуйте, как решить проблему.