0

grep を使用して crontab ファイルから行を抽出し、変数に保存するにはどうすればよいですか? これは機能していません:

CTMP=$(crontab -l | grep $SCRIPT)

$SCRIPT は、プログラム内で定義された別の変数です。抽出する必要がある行を識別するために crontab で検索している anm.sh の例。

ありがとう!

* アップデート *

それは非常に奇妙なことをしています。私はこれを試しました:

CTMP=$(crontab -l | grep "anm.sh")

これは私のcrontabがどのように見えるかです:

*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh

ただし、CTMP をエコーアウトすると、無意味な情報がランダムに表示されます。どういうわけか、現在の作業ディレクトリ内のディレクトリの名前を取得します。出力は次のとおりです。

*/17 anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp anm.cfg anm.sh databases logs tmp cd /home/administrator/anm-1.5.0 && ./anm.sh

それらのディレクトリ名は存在しますが、なぜそれらのディレクトリ名をプルしているのでしょうか???

私がする必要があるのは、変数 CTMP に保存されている crontab ファイルからその行を取得することだけです

ありがとう

4

2 に答える 2

2

問題は ECHO ステートメントにあると思います。

変数は、次のようにするとすぐに入力されますcrontab -l | grep "anm.sh"
CTMP="*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh"

echo $CTMP
<<bunch of dir names>>

echo "$CTMP"
*/17 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh

エコー時に変数を引用します。

于 2013-06-24T08:52:15.340 に答える
0

おそらく、グロビングをオフにしたいでしょう (アスタリスクは解釈中です)。

おそらく、引用符も使用する必要があります。

CTMP="$(set -f; crontab -l | grep 'anm.sh')"
于 2013-06-24T08:40:43.910 に答える