我正在尝试修改某些人的脚本,并且其中有一部分对我来说真的很混乱。它看起来像下面。
if [[ ! -f "${0%/*}/somefile" ]]; then
echo "Cannot find somefile, quiting..." >&2
exit 1
else
source "${0%/*}/somefile"
fi
我知道它正在检查文件的存在,并使用此代码${0%/*}
来尝试获取当前目录,但它不会为我运行。我修复它的方法是用pwd
替换它,效果要好得多。
我只是想知道是否有人可以向我详细说明代码${0%/*}
试图做的那部分内容?
答案 0 :(得分:2)
它不是试图获取当前目录,而是试图获取包含该脚本的目录。 $0
是脚本的名称,%/*
修饰符会删除其中最后一个/
的所有内容。
此脚本希望somefile
存在于安装脚本的同一目录中,而不是当前目录。