Cronジョブ*が現在のディレクトリのファイル名に置き換えられました。

Cronジョブ*が現在のディレクトリのファイル名に置き換えられました。

これは私の最初のシェルスクリプトなので、あなたはこれがもっと愚かな質問だと思います。

問題の概要 私の必要性は、Node.jsサーバーをインストールするシェルコマンドを書くことです。

  • サーバーには、依存関係でインストールされた3つのクローンが必要です。私たちは3つの環境を提供します。

質問 したがって、cron(string)を変数に割り当てようとすると、文字列内のすべてのアスタリスクが現在の作業ディレクトリのファイル名に置き換えられます。

VAR1="*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

これecho $VAR1でこれを行うと、出力は次のようになります。

*/3 file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh /usr/bin/wget -O /var/tmp/output-folder-here https://my.server.com:12000/cron/push >> /dev/null 2>&1

lsこのディレクトリのコマンド出力は次のとおりです。

file1.txt  file2.txt  generated.txt  sample.sh

ベストアンサー1

* 前にバックスペースを入れなければワイルドカードの役割をしません。

VAR1="\*/1       \*       \*       \*       \*      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

編集する

私が間違っています。上記の投稿を実行すると、*はエスケープされません。代わりに一重引用符を使用してください。

VAR1='*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1'

また、単一引用符を使用したくない場合は、印刷時に変数を引用するだけです。

echo "$VAR1"

しかし、シェルスクリプトにcronコマンドを含めるつもりはありません。これは私にとって良い習慣のようには見えず、スクリプトを使用してcrontabを更新する予定でなければうまくいきません。

おすすめ記事