簡體   English   中英

如何在新的終端窗口或標簽中使用從終端外殼腳本設置的變量? (OSX)

[英]How can I use variables set from a terminal shell script in a new terminal window or tab? (OSX)

環境變量或變量導出對我來說似乎不起作用...我看到已經涵蓋了許多版本,但它們似乎非常具體,我感到困惑。

我正在OSX 10.9上創建我的第一個Shell腳本。 到目前為止,該腳本執行以下操作:

1)向用戶詢問一系列問題,例如服務器IP地址,服務器端口,ssh登錄用戶名和其他變量。

2)使用用戶設置的變量,然后通過ssh連接到linux盒(ubuntu 14)。

3)ssh連接后,終端將啟動一個名為iperf3的程序,以使用用戶從腳本中指定的ipport在服務器上運行。

到目前為止,所有這些步驟都有效。

問題是,一旦iperf程序開始在腳本指定的端口上偵聽,所有終端命令都將暫停。 為了在客戶端上運行iperf3,此時,我需要打開一個新的選項卡或窗口,然后手動運行命令。 我寧願讓新選項卡繼續執行腳本。

但是,即使我手動運行命令,終端中的這些新選項卡或窗口也不知道用戶事先從腳本中設置的變量。 我一直在嘗試export命令並研究設置環境變量,但是我很困惑和迷茫。

理想情況下,接下來的步驟將從我創建的一個腳本文件運行,並繼續執行以下操作:

4)創建新選項卡,並使用用戶指定的ipport啟動iperf3

5)將創建的--json文件上傳到在Linux機器上運行的MySQL數據庫中。

對於不知道的人,iperf會測試客戶端和主機之間的網絡帶寬,並將結果發布到終端上。 我需要在許多不同的地方無線測試帶寬,自動執行大多數“復制粘貼”命令將節省大量時間。 任何幫助將不勝感激。

我知道有關在腳本之間傳遞數據的兩個技巧:

a)使用一個包含數據的小文件,然后使用以下命令獲取它:

echo $ip >> tmpfile
echo $other_data >> tmpfile

找回它:

var=$(cat tmpfile)
# You'll get one value per line and you can use it with something like
while read line
do
    ##do some job...
done < tmpfile

b)在行尾使用'&'來調用您不想等待的腳本,因此您不需要其他選項卡或腳本...

有關更多參考,請訪問: http : //www.tldp.org/LDP/abs/html/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM