我希望将所有以特定扩展名结尾的文件与 shell glob 相匹配。
在这种情况下,我希望定位以扩展名结尾的所有文件,这些文件是我在第一行.sh
放置“shebang”(如 )后使用 Bash shell 执行的 bourne 文件。#!/bin/bash
例如,这是我的 cron 命令:
0 0 * * * "$HOME"/public_html/cron_daily/myfile.sh 2>/dev/null
相反,我需要将 myfile.sh 定位到该目录中的所有文件,并以.sh
扩展名结尾。
下面的代码正确吗?
0 0 * * * "$HOME"/public_html/cron_daily/*$.sh 2>/dev/null
更新
我认为使用 glob 时这很好:
*.{sh}
答案1
您只需使用扩展*.sh
名来匹配所有文件.sh
。 (根据需要添加路径。)
然而这不会有你想要的结果。查看run-parts
从以下位置运行多个脚本cron
:
0 0 * * * /usr/bin/run-parts "$HOME"/public_html/cron_daily/ 2>/dev/null
(这将运行 中的所有可执行文件.../public_html/cron_daily
,而不仅仅是.sh
文件。顺便说一句,您确定将 cron 脚本保存在 下是个好主意吗public_html
?该目录是否由您的 Web 服务器提供服务?)
答案2
你不能这样做,因为它们将被合并到一个命令行中。
for scr in "$HOME"/public_html/cron_daily/*.sh ; do "$scr" 2> /dev/null; done