【问题标题】:Mac Terminal - Running Two commands at the same timeMac 终端 - 同时运行两个命令
【发布时间】:2013-10-23 08:22:29
【问题描述】:

更新:我怎么能跑:

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

但是 sleep 30 和 echo Foo 直到 afplay 任务完成才运行,这是在歌曲播放完毕之后。

我还尝试创建另外两个 .command 文件,然后让它们都运行:

batch song.command; batch echo.command

song.command 是:

afplay song.mp3

而 echo.command 是:

sleep 30; echo Foo

但是 echo.command 直到 song.command 中的所有内容都完成后才会执行。

我需要以某种方式在歌曲中回响大约 30 秒的内容。

帮助?

【问题讨论】:

    标签: macos terminal


    【解决方案1】:

    以下脚本应该可以工作:

    #!/bin/sh
    
    play() {
        afplay song.mp3
    }
    
    doecho() {
        sleep 30
        echo Foo
    }
    
    play &
    doecho &
    

    【讨论】:

    • 这里不需要子shell:afplay song.mp3 & { sleep 30; echo Foo; } 应该可以正常工作。
    • 我很惊讶!您可能想参考手册中的Grouping Commands
    • @devnull 这行得通,但是控制台被[1]+ Done ... 破坏了,子shell 不会发生这种情况,所以你需要>/dev/null... 这样子shell 就可以了。
    • 这个不用说了。如果不在子外壳中,您将收到后台命令的通知..
    • 对此我不确定!
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2010-11-19
    • 2011-06-11
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多