как получить стандартный вывод из команды в переменной

как получить стандартный вывод из команды в переменной

когда мы хотим узнать, что такое стандартный вывод ssh, то мы делаем

ssh  $linux_server "cat /proc/uptime"

[[ $? -eq 0 ]] && ssh is ok

но как узнать стандартный вывод ssh в следующем случае?

 UPTIME=`    ssh $linux_server "cat /proc/uptime"  `

решение1

Стандартный способ сделать это в большинстве оболочек (и, следовательно, наиболее переносимый) — использовать обратные кавычки (`), и поскольку аргумент, который у вас есть для ssh, не нуждается в кавычках, но результат, вероятно, будет таким:

UPTIME="`ssh $linux_server cat /proc/uptime`"

или вы можете быть специфичны для bash (и некоторых других оболочек, но не настолько универсальны, как обратная кавычка), используя $() следующим образом:

UPTIME="$(ssh $linux_server cat /proc/uptime$)"

Обратите внимание, что поскольку обратные кавычки используют одно и то же для разграничения команды, они не могут быть вложенными. Это одно из преимуществ конструкции bash. Она также не требует разветвления под-оболочки для немного более эффективного выполнения.

Более подробную информацию читайте на странице руководства bash.

Связанный контент