2016-06-10 4 views
0

Я пытаюсь установить zfs через скрипт оболочки во время установки. Я получаю некоторую ошибку, поэтому, чтобы полностью автоматизировать ее, я хочу, чтобы версия была установлена ​​из самой ошибки. Для всех других команд я получаю ошибку в одной переменной, но для одной команды ее вообще не происходит. Я пробовал все возможные решения.Сохраните вывод команды оболочки в переменной

мне нужен вывод этой команды

sploutput=$(sudo dkms install -m spl -v $version) 

echo $sploutput 

echo $sploutput # This is giving nothing. 

Я попытался оборачивать его вокруг строки также как "sploutput=$(sudo dkms install -m spl -v $version)"

echo "{sploutput}" 

Ничто не похоже на работу.

ответ

1
sploutput=$(sudo dkms install -m spl -v $version) 
echo $sploutput 

это может быть потому dkms install выходы на STDERR и не на STDOUT, и с помощью команды, которые вы используете, вы только получаете STDOUT выход в переменной. Для того, чтобы оба, вы можете попробовать:

sploutput=$(sudo dkms install -m spl -v $version 2>&1) 

перенаправлять STDERR в STDOUT.

+0

Это похоже на работу большое спасибо :) –

1

Согласно ответу ZMO в: попробуйте запустить sudo dkms install -m spl -v $version

Посмотреть, что это возвращается? : STDERR или STDOUT.

В случае, если он терпит неудачу, он ничего не обнаружит в sploutput. Он записывает только переменную STDOUT в переменную.

Использовать 2> & 1 (для записи стандартной ошибки на стандартный вывод). Вы можете обратиться IO redirection

Вы можете использовать следующие:

sploutput=$(sudo dkms install -m spl -v $version 2>&1) 
echo $sploutput 
Смежные вопросы