我想创建一个简单的bash脚本在OS X上启动Java程序的文件,文件路径,以及即时的工作文件夹中所有包含空格的名称。 当我这样做:
#!/bin/sh
cd `dirname $0`
我得到
usage: dirname path
我也试图把报价在各种不同的地方。 最复杂的例子是
cd "`dirname \"$0\"`"
没有奏效。 我要么得到错误信息或者神秘“用法:目录名路径”的消息。
什么是其他可能的工作方法?
编辑:这似乎并没有对任何人,但我的问题,所以它必须仅仅是我的盒子。 我会接受低于因为它仅工作了这一特定问题的解决方案我自己的职位。 不过我肯定upvoting这似乎是工作的其他人,非常感谢大家的帮助下解决方案。
#!/bin/sh
cd "$(dirname "$0")"
什么终于为我工作正在改变这一点:
#!/bin/sh
cd `dirname $0`
为此:
#! /bin/zsh
cd "${0:h}"
这也支持文件名和包含空格的文件路径。 这里就是我发现: http://rentzsch.com/unix/locationAwareCommandFiles
逸出的内双引号是不必要的:
cd "`dirname "$0"`"
但是,这并不了解问题的根源,这是莫名其妙的$ 0值显示为空,或者是一些奇怪的事情。 试着改变运行脚本是这样的:
bash -x scriptname
这将呼应的每一行,用内插变量,运行它之前。 这对于调试是非常有用的。 也相当有帮助的:
-u: abort on attempt to use undefined variable
-e: abort on first error