我正在使用Apple的自动器来创建Shell脚本。如果我将目录专门更改为jar文件所在的位置,则可以使其运行。但是,如果我想切换到Shell脚本运行的任何位置,该怎么办?
现在,我有以下功能,可以正常工作:
cd desktop/CommonDenom/
java -XstartOnFirstThread -jar CommonDenom.jar
我知道有一种方法可以定位启动Shell脚本的任何目录,但是我似乎无法正常工作。请具体说明,因为我已经很长时间没有使用Automator了。除非有人可以指定没有Automator的脚本编写方式。预先感谢。
shell脚本中为此的标准习惯用法是dirname $0
。 $0
变量是已执行脚本的路径,dirname
命令采用路径并剥离最后一个组件以将路径保留到包含目录。
cd "`dirname $0`"
只是想在这里称重。我见过有人遇到这个问题。如果您只是在OSX上并制作自己的脚本。这可以解决问题:)有点像hack,但是却像是一种魅力。
我不确定您的意思是“要将目录更改为运行脚本的位置”,因为无论如何,您将位于运行脚本的目录中,因此无需在此更改目录。我认为您的意思是您希望脚本保留在脚本开始的任何位置,但仍然能够找到jar文件。
#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "${DIR}"
...the rest of your script...