我将 Ubuntu 16.04 与 Bash 一起使用,并创建了这个无扩展、无 shebangless 文件/etc/cron.daily/cron_daily
:
for dir in "$drt"/*/; do
if pushd "$dir"; then
wp plugin update --all --allow-root
wp core update --allow-root
wp language core update --allow-root
wp theme update --all --allow-root
popd
fi
done
"$rse"
我这样做的原因是减少对crontab
.
我想问一下文件的命名是否安全,整体语法和变量扩展是否还可以。
drt
和变量在它们的rse
文件被获取并且可用之后已经被导出。
查看我可以访问的 Ubuntu 机器上同一位置的其他脚本,很明显这些脚本应该是正确的 shell 脚本。它们应该是可执行的并且有一个
#!
-line 指向正确的解释器。由于您希望变量
drt
设置为某个值,因此您应该检查它是否实际设置以及是否设置为合理的值。例如,如果$drt
应该是现有目录的路径名:同样对于
rse
:这将在脚本的开头完成。
目录检查
pushd
并且popd
主要用于交互使用(这可能会引起争论)。阅读和维护来回更改目录的脚本也很困难。也许不在这个脚本中,但在一般情况下。而不是更改工作目录,做某事,然后改回来,你可以使用
以上
cd
仅影响( ... )
子shell。在这个脚本中,它可能就足够了
假设这
$drt
是一个绝对路径,并且$rse
无论从何处开始,简单命令都能够正确运行(这将脚本留在 - 语句之后的修改后的工作目录中if
)。查看其他脚本/etc/cron.daily/
以了解它们是如何工作的(上面的建议是/etc/cron.daily/dpkg
脚本是如何工作的,但在它的if
-statement 之后没有进一步的命令)。该脚本将受益于正确缩进
for
-loop 和if
-statement 的主体。使用原始示例代码,可以这样完成:
缩进可以用空格或制表符来完成(这是一个口味问题)。
此外,我在写这篇文章时多次输入错误的变量名。拥有描述性的变量名称对您自己(在几周内)和其他任何试图弄清楚您的脚本应该做什么的人都是有益的。在脚本中使用短变量名没有任何好处,因为它会导致代码晦涩难懂。此外,我对这些变量设置在别处这一事实感到不安,因为这意味着依赖于未知且未在脚本中记录的内容。