【问题标题】:how to run multiple tell commands that open new window in one bash script?如何在一个 bash 脚本中运行多个打开新窗口的命令?
【发布时间】:2017-12-19 16:18:08
【问题描述】:

我试过了

#!/bin/bash
osascript -e '
  tell application "Terminal"
  do script "cd ~/www/service/code&& npm install && npm run dev"
  activate
  end tell

  tell application "Terminal"
  do script "cd ~/www/app-ui && npm install && npm start"
  activate
  end tell


'

什么也没发生,也没有错误。哪里出错了?

【问题讨论】:

  • 你真的需要为此使用 osascript 吗?
  • 当你可以在同一个 do script 块中同时拥有两个 do script 命令时,为什么要第二个 tell application "Terminal" 块,或者将命令组合到同一个 do script 命令中,例如do script "command; command"
  • @user3439894,空格是很好的形式,但不是绝对必要的。尝试运行echo foo&&echo bar——你会看到两个命令都运行。
  • @Charles Duffy,是的,我真的知道……没想到……我的第二杯咖啡还没喝完。

标签: bash command-line terminal applescript


【解决方案1】:

执行此操作的最简单方法是为要在单独窗口中运行的每个部分创建单独的脚本。

#!/bin/sh

cat >scriptA <<EOF
#!/bin/sh
cd ~/www/service/code && npm install && npm run dev
EOF
chmod +x scriptA

cat >scriptB <<EOF
#!/bin/sh
cd ~/www/service/code && npm install && npm run dev
EOF
chmod +x scriptB

open -a Terminal.app scriptA
open -a Terminal.app scriptB

【讨论】:

  • sry,对于 shell 来说真是太新奇了……但是 open -a Terminal.app scriptA open -a Terminal.app scriptB 不能一起执行,不是吗?我试了一下,把它们放到一个.sh文件里什么都没有,如果我不能一次运行所有脚本我觉得很不满意......
  • 对我来说很好。当然需要两行。
  • 我自己运行的确切代码位于gist.github.com/charles-dyfis-net/…——弹出一个包含HELLO的窗口,另一个包含WORLD的窗口。
  • ahhhh 伙计,我以为你的字面意思是制作两个文件,我确实这样做了,哈哈,它实际上是一个脚本。明白了,是的,它工作得很好!!!!非常感谢!
  • 嗯——它确实创建了两个文件。运行此脚本时,它会创建一个名为scriptA 的文件和另一个名为scriptB 的文件,然后启动两个终端——一个运行脚本A,一个运行脚本B。在现实世界的用例中,我希望您只是预先创建它们,而不是在运行时这样做。
猜你喜欢
  • 1970-01-01
  • 2013-05-23
  • 2015-08-04
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2015-12-02
  • 2011-09-30
  • 1970-01-01
相关资源
最近更新 更多