相当简单,我echo
在我的 shell (bash) 脚本中有一个语句,我想重定向到一个外部文件作为日志记录的一种方式。该脚本由 root 用户的 crontab 每小时运行一次(通过sudo crontab -e
)。
我希望此日志文件与脚本位于同一目录中。
我的第一次尝试是,
echo "$(date) | blah blah" >> "$(pwd)/script.log"
但是,这显然不起作用,因为根 crontab ( /root/
) 的工作目录与脚本的目录不同。因此,我遵循了一些关于 SO 的建议,
script_dir=$(dirname $0)
echo "$(date) | blah blah" >> "$(script_dir)/script.log"
这次,由于我还不明白的原因,日志文件保存在/
,如/script.log
.
从逻辑上讲,人们会假设变量script_dir
被评估为空字符串,因此"$(script_dir)/script.log"
被评估为"/script.log"
。
但是作为测试,我写了一个简单的测试脚本,
echo "$(dirname $0)"
并从/
. 果然,我得到了一个正确的非空输出:/home/pi/scripts/testscripts/dirname.sh
我编写的测试脚本所在的位置)。
那么交易是什么,我该如何让它发挥作用?
psbash --version
说我目前正在运行 GNU bash,版本 4.3.30(1)-release