如何從變數中的命令取得標準輸出

如何從變數中的命令取得標準輸出

當我們想知道 ssh 的標準輸出是什麼時,我們就這樣做

ssh  $linux_server "cat /proc/uptime"

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

但是在以下情況下如何知道 ssh 標準輸出?

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

答案1

對於大多數 shell(因此也是最可移植的)執行此操作的標準方法是使用反引號 (`),並且由於您必須 ssh 的 arg 不需要引號,但結果可能是您會寫:

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

或者您可以透過使用 $() 來特定於 bash (以及其他一些 shell,但不像反引號那麼通用):

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

請注意,由於反引號使用相同的東西來分隔命令,因此它們不能嵌套。這是 bash 結構的優點之一。它也不需要分叉子 shell 來稍微提高執行效率。

閱讀 bash 手冊頁以獲取更多詳細資訊。

相關內容