特定の拡張子で終わるすべてのファイルをシェルグローブと一致させたいです。
.sh
この場合、最初の行に "shebang"(like)を入れてから、Bashシェルを使用して実行するbourneファイルである拡張子で終わるすべてのファイルを見つけたいと思います。#!/bin/bash
たとえば、以下は私のcronコマンドです。
0 0 * * * "$HOME"/public_html/cron_daily/myfile.sh 2>/dev/null
.sh
代わりに、拡張子で終わるディレクトリ内のすべてのファイルにmyfile.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
1つのコマンドラインにマージされるため、これを行うことはできません。
for scr in "$HOME"/public_html/cron_daily/*.sh ; do "$scr" 2> /dev/null; done