一次将多行传递到终端?

时间:2018-03-31 16:10:52

标签: shell applescript

我正在尝试使用AppleScript将多行传递到终端。我想要做的是改变视频输入&输出一键。这是我到目前为止所做的,但似乎只有第一行执行而其他一切都被忽略了。我尝试使用多行do script,但每个行都会打开一个新窗口。有什么建议吗?

on run {input, parameters}

    tell application "Terminal"
        do script "nc xxx.xxx.x.xxx 9990
        VIDEO OUTPUT ROUTING:
        0 3
        1 15
        2 15"
    end tell

    return input

end run

1 个答案:

答案 0 :(得分:0)

我以前没有使用过{ provide: NZ_MESSAGE_CONFIG, useValue: { nzDuration: 1500, nzMaxStack: 1, nzPauseOnHover: true, nzAnimate: true } }, 命令,因此我假设您演示的格式是可行的。按照这些方法进行,如果您需要为此命令打开物理 Terminal 窗口,则可以通过以下几种方式发送多行bash命令:

nc

或者:

    tell application "Terminal"
        do script "nc xxx.xxx.x.xxx 9990 << EOF
        VIDEO OUTPUT ROUTING:
        0 3
        1 15
        2 15
        EOF"
    end tell

如果要求终端打开以运行此命令,则可以改为使用 tell application "Terminal" do script "nc xxx.xxx.x.xxx 9990 \\ VIDEO OUTPUT ROUTING: \\ 0 3 \\ 1 15 \\ 2 15" end tell

do shell script

(请注意,没有 do shell script "nc xxx.xxx.x.xxx 9990 \\ VIDEO OUTPUT ROUTING: \\ 0 3 \\ 1 15 \\ 2 15" 块,因为tell是AppleScript标准添加之一。)

当我在上面的两个代码片段中使用Bash行继续符do shell script时,脚本编辑器会将多行字符串重新格式化为一行,替换换行符与\。它看起来很丑,但它代表相同的字符串。或者,您可以连接多个字符串,如下所示:

\n