我需要一个外壳脚本,将允许我排版从TextWrangler (一个Mac应用程序)的Lilypond文件。到目前为止,我已经想出了这个:
#!/bin/sh
/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1当然,这是行不通的。(这就是我在Stack Overflow的原因。)
当我从TextWrangler中的shebang菜单运行该脚本时,我得到以下输出:
/Applications/LilyPond.app/Contents/Resources/bin/lilypond: option faultpaper,
--output'' requires an argument怎么回事?
我在运行雪豹,TextWrangler和Lilypond。感谢你的帮助。
发布于 2012-01-06 16:52:29
Unix编辑:找到了一种在TextWrangler启动的脚本中获取文档路径的方法,所以我重写了这段代码。
在TextWrangler中,通过#!菜单可以使用多种方式处理脚本,我不确定您要使用哪种方式。不过,看起来您正在尝试创建一个Unix脚本来转换您的LilyPond文档。
正如你的错误提示,不幸的是,Unix脚本根本没有任何参数,所以$1将是空的。然而,事实证明,BBEdit/TextWrangler的最新版本确实在运行脚本之前设置了一些环境变量(参见BBEdit 9.3 Release Notes并向下滚动到Changes)。特别是,您可以使用以下环境变量:
BB_DOC_PATH path of the document (not set if doc is unsaved)因此,将this script保存到~/Library/Application Support/TextWrangler/Unix Support/Unix Scripts就可以了。
您可能正在尝试的其他方法并不能很好地工作:
使用Unix过滤器的
#!代码,并让TextWrangler尝试将您的文件作为脚本执行,并使用#!作为选择脚本解释程序的指南。不幸的是,#!行只适用于某些脚本语言,而LilyPond (不完全是脚本语言)不是其中之一。这就是Peter Hilton正在尝试做的事情,正如他所指出的,如果您试图在LilyPond文件的顶部添加一个#!行,您将会得到LilyPond语法错误。(如果您很好奇,从技术上讲,有一种方法可以让#!perl运行正常工作,即使用here-document语法将LilyPond代码嵌入到可执行的shell或→脚本中。但这是一个粗俗的黑客攻击,很快就会变得笨拙。)上面链接的脚本有一些限制:
您可以通过求助于AppleScript来制作更复杂的解决方案来解决这些问题。执行此操作的两种方法:
~/Library/Application Support/TextWrangler/Scripts。然后它会出现在AppleScript菜单中(奇怪的scrolly ),或者你可以通过调出Window→Palettes→Scripts来访问它。我相信有两个人已经沿着这条路走上了这条路,并分享了他们的结果:从MacOS 10.5 Applescript for TextWrangler thread on lilypond-devel, 21-Jul-2008)中提取的
发布于 2011-09-26 18:14:54
问得好。如果你这样做,它实际上在我的系统上运行Lilypond:
#!/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1…但是失败了,因为#不是行注释字符,所以Lilypond尝试解析该行。
由于TextWrangler找不到‘shebang’行,所以用块注释将其括起来失败。
%{
#!/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1
%}另一种方法是使用Smultron 3,它允许您定义可通过键盘快捷键运行的commands。
https://stackoverflow.com/questions/6791331
复制相似问题