而且:“为什么这个特定的剧本有这个结果?”
来自Getting the source directory of a Bash script from within,基于his comment中用户l0b0在该问题上提供的一些代码段,我将以下内容用于cron作业:
DIR=$(pwd)
if [ $CRON == "true" ]; then
# If the environment variable $CRON is set to true, we're probably in a cron job
if [ $PWD == "/" ]; then
# And if the current working directory is root, we're probably in a cron job
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd && echo x)"
DIR="${DIR%x}"
fi
fi
然而,无论如何,我的目录变量($ DIR)以某种方式结束了换行符,这会在$ DIR变量用于创建路径时中断脚本。为什么换线呢?
不可否认,我并不过分熟悉bash脚本和命令替换的细微差别。我有可能误解了l0b0脚本背后的目的。
答案 0 :(得分:0)
简单:建议的代码错误并且总是添加换行符(因为pwd总是打印一个)。
更正的版本将是
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && printf "%sx" "$PWD")"
dir=${dir%x}