【问题标题】:Xterm: How can I direct input from one terminal tab to another?Xterm:如何将输入从一个终端选项卡定向到另一个?
【发布时间】:2021-03-08 07:56:23
【问题描述】:

由于我是一名初学者,对于不恰当的术语,我提前道歉。 这是在新选项卡中调用脚本 ping.sh 的主脚本。

    #!/bin/bash

    echo "The script is running!"

    rm ping.txt

    echo "Enter your desired IP address:"

    read ADDRESS

            osascript -e 'tell application "System Events" to tell application "Terminal"
            do script "./ping.sh"
            end tell'

    echo "The script has ended!"

    exit 0;

所以,正如我所说,脚本 ping.sh 现在被调用。是这样的。

    #!/bin/bash

    echo "Welcome to the new tab!"

    ping -c 3 $ADDRESS > ping.txt

    exit 0

我遇到的问题是来自第一个选项卡的读取输入在第二个选项卡中无法识别。有没有办法解决这个问题?我可能缺少链接构造函数或类似的东西。请帮忙!

【问题讨论】:

    标签: linux macos unix terminal


    【解决方案1】:

    我不知道osascript 是什么,也不知道它是如何工作的,但是知道shell 脚本可以使用特殊变量$1$2$3 等访问命令行参数可能会有所帮助.

    这意味着您可以像这样重写您的 ping.sh 脚本:

    #!/bin/bash
    
    echo "Welcome to the new tab!"
    
    ping -c 3 "$1" > ping.txt
    
    exit 0
    

    然后这样称呼它:

    #!/bin/bash
    
    echo "Enter your desired IP address:"
    
    read ADDRESS
    
    ./ping.sh "$ADDRESS"
    

    否则,为确保后续命令可以访问相同的环境变量,您必须export 它们。来自help export

    导出:导出 [-fn] [名称[=值] ...] 或导出 -p

    为 shell 变量设置导出属性。

    标记每个 NAME 以自动导出到随后的环境 执行的命令。如果提供了 VALUE,请在导出前分配 VALUE。

    要使您的原创 ping.sh 工作,您可以执行以下操作:

    #!/bin/bash
    
    echo "Enter your desired IP address:"
    
    read ADDRESS
    export ADDRESS
    
    ./ping.sh
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多