如何在新的终端窗口或选项卡中使用从终端shell脚本设置的变量? (OSX)

时间:2014-06-10 18:47:57

标签: linux macos bash ssh global-variables

环境变量或变量输出似乎对我不起作用......我看到已经涵盖了许多版本,但它们看起来非常具体,我感到困惑。

我正在OSX 10.9上创建我的第一个shell脚本。该脚本到目前为止执行以下操作:

1)向用户询问一系列问题,如服务器IP地址,服务器端口,ssh登录用户名和其他变量。

2)使用用户设置的变量,然后通过ssh连接到linux框(ubuntu 14)。

3)ssh连接后,终端启动一个名为iperf3的程序,使用用户从脚本中指定的ipport在服务器上运行。

到目前为止,所有这些步骤都有效。

问题是,一旦iperf程序开始侦听脚本指定的端口,所有终端命令都将暂停。为了在我的客户端上运行iperf3,此时我需要打开一个新的选项卡或窗口,并手动运行命令。我宁愿让新标签继续离开剧本。

但是,即使我手动运行命令,终端中的这些新选项卡或窗口也不知道用户之前从脚本设置的变量。我一直在尝试导出命令,并研究设置环境变量,但我很困惑和丢失。

理想情况下,后续步骤将从我创建的一个脚本文件中运行,然后按以下步骤操作:

4)创建新标签页,然后使用用户指定的iperf3ip启动port

5)将创建的--json文件上传到linux盒子上运行的MySQL数据库。

iperf,对于那些不知道的人,测试客户端和主机之间的网络带宽,并将结果发布到终端。我需要无线地在许多不同的地方测试带宽,并且自动化大多数“复制粘贴”命令将节省大量时间。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我知道在脚本之间传递数据的两个技巧:

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)使用'&amp;'在行的末尾调用一个你不想等待的脚本,所以你不需要另一个标签或脚本......

供进一步参考: http://www.tldp.org/LDP/abs/html/index.html

相关问题