grep searchstring /etc/crontab BASHスクリプトの奇妙な動作

grep searchstring /etc/crontab BASHスクリプトの奇妙な動作

私はcrontabを介して自動バックアップを生成するBASHスクリプトを開発しています。使ってみよう

myVARIABLE=`grep backup /etc/crontab`

エントリを入力すると、「backup」を含む行が返されます。行を返すのではなく、/etc/crontab複数のlsコマンドの出力を返すようです。私はコマンドを実行しました

grep backup /etc/crontab

コマンドラインは期待どおりに機能します。 BASHスクリプトを使用して他のファイルをgrepすることもできますし、期待される結果も返します。/etc/crontabこれがスクリプトでgrepの問題を引き起こす理由についてのアイデアはありますか?ありがとうございます!

答え1

*これは、/ etc / crontabにエスケープされないと、シェルによって拡張されるアスタリスク文字()が含まれているためです。

次の2つのコマンドの出力を比較します。

echo $myVariable
echo "$myVariable"

最初のコマンドはエスケープされていない変数を使用するため、アスタリスク文字は現在のディレクトリ内のすべてのファイルに展開されます。 2番目のコマンドは、必要なもの、つまりcrontabファイルの実際の内容です。

関連情報