新手第一次写 shell 脚本遇到了一个问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
4641585
V2EX    问与答

新手第一次写 shell 脚本遇到了一个问题

  •  
  •   4641585 2015 年 11 月 25 日 2793 次点击
    这是一个创建于 3716 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 OS X 下有一个命令行音乐播放器 afplay

    但是这个命令每次只能接受一个参数

    我尝试写一个脚本让它可以播放文件下所有的音乐文件

    首先想到的就是

    #!/bin/zsh for music in "$@" do afplay ${music} done 

    尝试运行,出现了

    may only specify one file to play 

    于是我意识到应该是播放结束后执行下一次循环

    但是……

    要怎么知道当前这首歌已经播放完成了呢?

    10 条回复    2015-11-25 13:15:04 +08:00
    manoon
        1
    manoon  
       2015 年 11 月 25 日
    逻辑上来讲
    想办法去判断一首歌的时间长度,
    如果没有办法去判断,那就都设成 5 分钟

    我是打酱油的,提供一个思路,哈哈。
    kendetrics
        2
    kendetrics  
       2015 年 11 月 25 日
    意思就是在播放中再次执行命令就会输出 may only specify one file to play ?
    你在循环里加个判断呢,如果输出匹配这个就不跳到下一首的名字去,而是继续尝试执行这一首的命令
    4641585
        3
    4641585  
    OP
       2015 年 11 月 25 日 via iPhone
    @kendetrics
    我用
    ./mysh.sh
    来执行,
    直接就会蹦出那句提示
    v2gba
        4
    v2gba  
       2015 年 11 月 25 日   1
    for SONG in *.mp3 ; do afplay ${SONG} ; done
    4641585
        5
    4641585  
    OP
       2015 年 11 月 25 日
    @kendetrics
    /Users/{user}/Downloads/floder git:(master) ./test1 *.wav
    {
    may only specify one file to play

    Audio File Play
    Version: 2.0
    Copyright 2003-2013, Apple Inc. All Rights Reserved.
    Specify -h (-help) for command options

    Usage:
    afplay [option...] audio_file

    Options: (may appear before or after arguments)
    {-v | --volume} VOLUME
    set the volume for playback of the file
    {-h | --help}
    print help
    { --leaks}
    run leaks analysis
    {-t | --time} TIME
    play for TIME seconds
    {-r | --rate} RATE
    play at playback rate
    {-q | --rQuality} QUALITY
    set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality)
    {-d | --debug}
    debug print output
    } *n #n=$#
    4641585
        6
    4641585  
    OP
       2015 年 11 月 25 日
    @MrGba2z

    现在比较困惑的是怎么写成一个脚本来执行
    hienchu
        7
    hienchu  
       2015 年 11 月 25 日 via iPhone
    找个能分析 mp3 的工具,得到时间长度,问题就解决了。如果不想用工具,可以根据码率和文件大小做个大概的估计
    liberize
        8
    liberize  
       2015 年 11 月 25 日
    我这儿 afplay 是同步的,播完才会播下一首,脚本运行没问题
    4641585
        9
    4641585  
    OP
       2015 年 11 月 25 日
    @liberize

    能不能分享一下脚本
    liberize
        10
    liberize  
       2015 年 11 月 25 日
    @4641585 就你的脚本,你试下 afplay 单独播一首,是不是播完才退出
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5794 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 02:18 PVG 10:18 LAX 18:18 JFK 21:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86