我想创建一个简单的bash脚本在OS X上启动Java程序的文件,文件路径,以及即时的工作文件夹中所有包含空格的名称。当我这样做:

#!/bin/sh
cd `dirname $0`

我得到

usage: dirname path

我也试图把报价在各种不同的地方。最详细的例子是

cd "`dirname \"$0\"`"

没有奏效。我要么得到的错误消息或隐蔽的“用法:目录名路径”消息

什么是其他可能的工作方法?


编辑:这似乎并没有对任何人都是一个问题,但我所以它必须仅仅是我的盒子。我会接受低于因为它仅工作了这一特定问题的解决方案我自己的职位。不过我肯定upvoting这似乎是工作的其他人,非常感谢大家的帮助下解决方案。

有帮助吗?

解决方案 3

什么终于为我工作正在改变这一点:

#!/bin/sh
cd `dirname $0`

要这样:

#! /bin/zsh
cd "${0:h}"

这也支持文件名和包含空格的文件路径。在此处,我发现它: http://rentzsch.com/unix/locationAwareCommandFiles

其他提示

约什么:

cd "$(dirname "$0")"

这是我在这里工作的。

#!/bin/sh
cd "$(dirname "$0")"

摆脱内双引号是不必要的:

cd "`dirname "$0"`"

但是,这并不了解问题的根源,这是莫名其妙的$ 0值显示为空,或者是一些奇怪的事情。试着改变运行脚本是这样的:

bash -x scriptname

此将回声的每一行,与内插变量,运行它之前。这对于调试是非常有用的。也非常有用的:

-u: abort on attempt to use undefined variable
-e: abort on first error

嘿不知道这...但是,它可能是你的

#!/bin/sh 

点的东西,是不是来砸?我通常使用方法是:

#!/usr/bin/bash

很新的整个脚本的事情,所以不知道。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top