特定の基準に一致するファイルのリストをファイルにインポートする小さなスクリプトを作成しようとしています。
#!/bin/sh
cd /var/www_data/patch/
grep --include=\*.{php,ini,conf,sh} -ril -P "'([\d\w\-\_\.]+)(@domain.com)'" "/var/www_data/something/" 2>&1 > mails
このgrep
行はコマンドラインでうまく機能しますが、スクリプトを介して実行すると結果のファイルサイズが0バイトになります。なぜこれが起こるのかご存知ですか?
答え1
私の間違いを見つけました。そうしたはずだった#!/bin/bash
。ヒントをありがとう@steeldriverに感謝します。
答え2
スクリプトでシェル拡張を有効にするには、bashにコマンドラインオプションを渡す必要があります。これはスクリプト自体で行うことができます。
#! /bin/bash
set -B #enables expansion
set -X #enables debugging
最初のオプションを使用すると、コマンドラインに書かれているようにすべてがシェルに渡され、2番目のオプションは多くの出力を生成するので、何が起こっているのかを確認するのに役立ちますが、スクリプトが正常に動作したら確実に無効にしたいと思います。