2015-07-07 1 views
2

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

stty: standard input: Inappropriate ioctl for device 

Мой код выглядит следующим образом:

 req="script $ip" 
     response=$($req) 
     echo $response 

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

Сценарий работает как предполагалось, он просто раздражает меня, что сообщение об ошибке всегда отображается пользователю.

Я попытался добавить:

response=$($req "&>/dev/null) 

и

response=$($req) &>/dev/null 

но не повезло, и сообщение об ошибке по-прежнему не отображается.

Я просто хочу скрыть это от пользователя.

ответ

4

eval может вам помочь, но это insecure.

Используйте следующий метод (eval альтернативных):

cmd=(script "$ip") 
response=$("${cmd[@]}" 2>/dev/null) 
echo "$cmd" 
+0

@Atli Þrastarson: Проверьте обновленный ответ. –

+0

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