2015-10-07 79 views
1

我是Shell Script Linux的新手。
我正在与Android自动化测试,所以我想运行一些shell脚本波纹管如下:运行命令而不让我等待

  1. 开始由亚洲开发银行记录屏幕(cmd1.sh)
  2. 执行场景测试,然后停止/保存记录文件(cmd2.sh)

不幸的是,当我运行cmd1.sh时,我必须等待3分钟,然后运行cmd2.sh。
这意味着我不能录制视频:伤心:
这里是我的运行命令的内容:

run.sh文件内容:

./cmd1.sh $
。 /cmd2.sh

cmd1.sh文件内容:

亚行壳screenrecord /sdcard/file.mp4

cmd2.sh文件内容:

葫芦,Android上运行app.apk

最后,我打开终端然后运行命令:

./run.sh

当然,视频无法保存,因为在cmd1.sh完成后,cmd2.sh会运行!
有没有人可以帮助我呢?
非常感谢!

@Jrican更新
这里是手动工序,我可以播放视频录制。
1.打开终端A
2.执行命令1(开始记录屏幕脚本)
3.打开另一端子B,则运行一个命令2
4.命令2结束后,返回到终端A,然后CtrlÇ 。
5.确认可以正常播放的/sdcard/file.mp4中的视频

我正在使用MAC OSX Yosemite 10.10。5

+0

请问这项工作吗?$ ./cmd1.sh& ./cmd2.sh – Jrican

+0

谢谢!让我试试然后很快更新你! – Tama

+0

@Jrican:我试过了。但仍然不起作用。 错误: $:未找到命令 – Tama

回答

2

简单的解决方案: run.sh文件内容:

./cmd1.sh &   # run this command in the background 
./cmd2.sh   # run this command to completion 
kill -SIGINT %1  # send the interrupt signal to the first command (ctrl+c) 

略多正确解决方案: run.sh文件内容:

./cmd1.sh &   # run this command in the background 
recPID=$!    # save the PID for this process for later 
./cmd2.sh    # run this command to completion 
kill -SIGINT $recPID # send the interrupt signal to the first command (ctrl+c) 
+0

我确认为什么我不能保存后播放视频。 我会更新上述问题的其他方式。 – Tama

+0

非常感谢。现在一切正常! – Tama

+0

很高兴听到! – Jrican

0

同时运行两个命令,然后将第二命令的完成时杀死所述第一命令的PID:

#!/bin/sh 

# Run first command in background: 
./cmd1.sh & PID="$!" 

# Run second command: 
./cmd2.sh 

# Kill the first command: 
kill "$PID" 
+0

我不想在这里等。 cmd1表示开始录制。 cmd2表示做测试用例。最重要的是,我想录制一段视频。 希望你得到我的问题 – Tama

+0

我删除了时间延迟。虽然我觉得这仍然不能解决你的问题。我会尝试在我的android上安装这些软件包,看看我是否可以重现用例。 – 2015-10-07 02:11:10

+0

谢谢。 Jrican的回答已被纠正。但是我有另外一个问题,我想在命令2完成后杀死/停止Cmd1? – Tama