【发布时间】:2011-12-29 06:53:29
【问题描述】:
我有更大的 shell 脚本来处理不同的事情。
它将通过以下方式获得自己的位置...
BASEDIR=`dirname $0`/..
BASEDIR=`(cd "$BASEDIR"; pwd)`
然后将使用 BASEDIR 创建其他变量,例如
REPO="$BASEDIR"/repo
但问题是,如果路径包含当前执行的空格,则此 shell 脚本不起作用。
所以问题是:是否存在解决该问题的好方法?
【问题讨论】:
-
这应该是posix,因为它应该在尽可能多的unix上运行...在这里你可以看到我的意思的脚本(它被用作模板)。 svn.codehaus.org/mojo/trunk/mojo/appassembler/…
-
我在
bash和dash(Ubuntu 用于sh)中运行了上面的命令,其父目录的名称包含空格。它似乎工作得很好。如果您从有问题的目录中的终端运行命令,然后运行 echo "$REPO"会发生什么?我猜你忘了在某处引用"$REPO"。 -
Full0 引用的子shell 通常是您想要的。完整引用
$0肯定是个好主意。一个更完整的例子会很有帮助。
标签: shell