2013-10-23 340 views
0

更新:我怎么能运行:Mac的终端 - 在同一时间运行两个命令

osascript -e 'set desktopImage to POSIX file "~/image.jpg" 
tell application "Finder" 
set desktop picture to desktopImage 
end tell' 

通过.command文件?

我试图通过终端进行歌曲播放,然后在歌曲的某个时间,在终端中回应某些内容。

起初我想:

afplay song.mp3; sleep 30; echo Foo 

但睡30和回声富都没有运行,直到afplay任务已经完成,这是歌曲有播放完。

我也尝试创建另外两个.command文件,然后让他们既跑:

batch song.command; batch echo.command 

song.command之中:

afplay song.mp3 

而且echo.command之中:

sleep 30; echo Foo 

但是,只有在song.command中的所有内容完成后,echo.command才会执行。

我需要以某种方式回应约30秒的歌曲。

帮助?

回答

2

下面的脚本应该工作:

#!/bin/sh 

play() { 
    afplay song.mp3 
} 

doecho() { 
    sleep 30 
    echo Foo 
} 

play & 
doecho & 
+1

你并不需要在这里子shell:'afplay Song.mp3的&{睡眠30;回声Foo; ''应该运作良好。 – devnull

+0

@devnull嗯,有趣;我从来没有在shell中使用'{'和'}'... – trojanfoe

+0

我很惊讶!您可能想参考手册中的[分组命令](http://www.gnu.org/software/bash/manual/bashref.html#Command-Grouping)。 – devnull