在腳本的中間,我有一個暴露本地埠的命令,ssh -R 80:localhost:8080 localhost.run我需要在后臺執行此命令,決議輸出并將其保存到變數中。
輸出回傳:
Welcome to localhost.run!
...
abc.lhrtunnel.link tunneled with tls termination, https://abc.lhrtunnel.link
需要捕獲這部分:
https://abc.lhrtunnel.link
結果是這樣的:
...
hostname=$(command)
echo $hostname
...
uj5u.com熱心網友回復:
試試這個Shellcheck -clean 代碼:
#! /bin/bash -p
hostname=$(ssh ... \
| sed -n 's/^.*tunneled with tls termination, //p')
declare -p hostname
- 我假設您真的不想后臺生成輸出的命令。您只想以允許捕獲和過濾其輸出的方式運行它。請參閱如何從 bash 腳本并行運行多個程式?有關如何將“后臺”行程用于并行處理的資訊。
-n選項sed意味著它不會從輸入中列印行,除非明確指示列印。s/^.*tunneled with tls termination, //p適用于包含任何后跟字串的輸入行tunneled with tls termination,。它會洗掉該字串末尾的所有內容并列印結果,希望這將是您想要的 URL。declare -p varname是一種比使用更可靠和更有用的方式來顯示變數的值echo。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439468.html
