如何获取其中的目录路径的Bash脚本位于,里面那个脚本?
例如,假设我想使用Bash脚本作为另一个应用程序的启动器.我想将工作目录更改为Bash脚本所在的目录,因此我可以对该目录中的文件进行操作,如下所示:
$ ./application
在Linux上,该readlink实用程序接受一个-f跟随其他链接的选项.这似乎不适用于Mac和可能基于BSD的系统.相当于什么?
这是一些调试信息:
$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
Run Code Online (Sandbox Code Playgroud) 我有一个在OS X上具有用户执行权限的shell脚本,但是当我双击它时,它会在文本编辑器中打开.如何通过双击来运行它?
我的bash脚本中有以下代码.现在我想在POSIX中使用它.那么如何转换呢?谢谢.
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )"
Run Code Online (Sandbox Code Playgroud) readlink -f在MacOS上不存在.我设法在网上找到的唯一可用的Mac OS解决方案是这样的:
if [[ $(echo $0 | awk '/^\//') == $0 ]]; then
ABSPATH=$(dirname $0)
else
ABSPATH=$PWD/$(dirname $0)
fi
Run Code Online (Sandbox Code Playgroud)
任何人都可以向这个看似微不足道的任务提出更优雅的建议吗?
我正在编写bash脚本,在Ubuntu中使用“ sh”命令时会引发错误(似乎与破折号不兼容,我正在学习此主题)。因此,我想检测是否使用破折号而不是bash引发错误。
如何在脚本上下文中检测到它?可能吗?
我有一个运行jar文件的小脚本:
#!/bin/bash
prefix="foo";
name=`ls ${prefix}*.jar`;
echo $name;
java -jar $name prop1.properties prop2.properties
Run Code Online (Sandbox Code Playgroud)
当我使用./myscript.sh在终端中运行它时,它工作正常并且jar文件执行,但是当我在myscript.command中重命名并双击它时,我有这个错误:
ls: foo*.jar : No such file or directory
Run Code Online (Sandbox Code Playgroud)
我看到显然.command文件在根目录下打开一个终端,所以我尝试使用它找到包含myscript.command的目录:
dir = 'find <dir> -maxdepth 1 -type d -name '*myDirContainingJar*' -print -quit'
cd $dir
Run Code Online (Sandbox Code Playgroud)
但是dir只是空白,任何想法???