的名字,我有我要在多个目录获取包含的文件夹
这里面的脚本复制一个shell脚本,我怎么能初始化变量
PARENT_FOLDER
的方式在它的存储包含此脚本的文件夹的名称(而不是绝对路径)?
请注意,此脚本可以从任何文件夹运行。
在此先感谢。
的名字,我有我要在多个目录获取包含的文件夹
这里面的脚本复制一个shell脚本,我怎么能初始化变量
PARENT_FOLDER
的方式在它的存储包含此脚本的文件夹的名称(而不是绝对路径)?
请注意,此脚本可以从任何文件夹运行。
在此先感谢。
在大多数情况下,下面的获取对脚本的目录的绝对路径:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
(OSX和BSD可能缺乏-f
选项,而不该路径仍可能包含符号链接。)
如果你只是想在路径中最后的目录的名称,只需添加一个步骤:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
PARENT_FOLDER=${PARENT_FOLDER##*/}
在系统中缺少readlink -f
但它是bash可供选择:
PARENT_FOLDER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PARENT_FOLDER=${PARENT_FOLDER##*/}
如果缺乏这两种readlink -f
和bash:
PARENT_FOLDER="$(cd "$(dirname "$0")" && pwd)"
PARENT_FOLDER=${PARENT_FOLDER##*/}
是的。它使用-f选项在mac osx上创建了一个问题,所以最好使用@AdrianFrühwirth –
@IssamT提到的解决方案。 OSX通常有点不同。我也更新了我的答案。 – John1024
现在我认为这是几乎任何人的完整答案。不错的工作 :) –
PARENT_FOLDER=$(pwd | awk -F/'{if ($NF!="") print $NF; else print "/"}')
为了得到当前目录的父文件夹,您可以使用下面的命令
PARENT_FOLDER=$(pwd | awk -F"/" 'OFS="/"{$NF=""}1')
更新
也低于命令可以工作
从命令目录名称的人页 打印NAME移除其尾端/组件;如果NAME不包含/,则输出'。'(表示当前目录)。
PARENT_FOLDER = $(目录名称 “$ PWD”) 或
PARENT_FOLDER=$(dirname "$0")
为我工作在Mac的最佳解决方案,Linux是
PARENT_FOLDER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PARENT_FOLDER=${PARENT_FOLDER##*/}
这是一个在此链接给出的答案组合:
Getting the source directory of a Bash script from within
答案由@ John1024给出
“文件夹的名称(而不是路径)”是什么意思? – John1024
[可以用Bash脚本告诉它存储在哪个目录?](http:// stackoverflow。com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in) –
对不起,我不是很确切。通过路径我的意思是绝对路径,而我的名字我的意思不仅仅是名字。你的回答正是我需要的(+1并且接受)非常感谢。 –