0
私はコマンドに値を渡したい変数を持っています。しかし、$は珍しい結果を生み出しています。 *のように動作し、すべてのディレクトリを検索しているようです。私のコードは:bashの値をコマンドに渡す
"Please enter the test type: "
read test
result="pass"
search_result=`find ./logs/$test_2017_01_logs*/* -type f -name func_log -exec egrep $result {} \;`
echo "$search_result"
私のコードが行っているディレクトリではなく、ユーザーが読み込んだディレクトリサフィックスを検索したいだけです。
渡された値($ test)と残りのフォルダ名(_2017_01_logs *)の連結による問題ですか?
も前後に引用符を追加したい場合があります'$ result'は、単語分割されないようになります(最初の単語を超える単語は追加のファイル名として解釈されます)。 –
私は '-exec egrep -h -e" $ result "/ dev/null {} +'を提案します。これは、grepを必要以上に実行しないようにするためです。 '-e'の直前)は、' result'をダッシュで始まっていてもリテラル文字列として解釈します。 ( '-h'は出力のファイル名を抑制し、複数の名前が渡された場合でも現在の使用法と同等の動作をします;望むならそれを取り出してください)。 –
... '/ dev/null'はそこにあります。' grep'はいくつの場合にいくつのファイル名が渡されるかに基づいて動作が変わるからです。それが存在すると、コマンドラインに追加される結果の数が多くても、一貫した動作が保証され、イディオムが 'xargs'で再利用されると、インプリメンテーションでstdinからインスタンスを読み込むことはありません結果が0件のケース(IIRC、MacOSの実装はこれらの1つです)で呼び出します。 –