0

期待どおりに動作しない単純なスクリプトがあります。

#!/bin/bash
CRONFILE="/tmp/temp_cron"
crontab -l > "$CRONFILE" 
grep "* * * * * /usr/local/bin/temp_cpu_gmetric.sh" /tmp/temp_cron
CRONCONT=`grep "* * * * * /usr/local/bin/temp_cpu_gmetric.sh" /tmp/temp_cron`
echo $CRONCONT

私のcrontabは1行で構成されています。これは、* * * * * /usr/local/bin/temp_cpu_gmetric.shまさにgrepさ​​れているものです。予想どおり、grep の最初のインスタンスは、この文字列の 1 つのインスタンスを返します。

ただし、echo $CRONCONTインスタンスは、* * * * *一連のものに置き換えられて返されます。これには、スクリプトが実行されるディレクトリの内容が含まれますが、場所がすぐにはわからない他の多くのものも含まれます。

cronfile から削除する* * * * *と、問題は解決しますが、現在では機能しない理由がわかりません* * * * *

4

1 に答える 1

2

基本的に 1 つの問題は、それ*が のメタ文字であることですgrep。を検索したい場合は*、 のように引用してください\*。パターンがうまくいった理由を確認するには、chepner によるこのコメントを参照してください。

または、grepコマンドをfgrep(正確な文字列を検索します。

もう 1 つの問題は、これ*はシェル展開用のメタ文字であるため、echo "${YOURVARIABLE}".

于 2012-06-08T18:21:18.990 に答える