Bashスクリプトのegrepは機能しません。

Bashスクリプトのegrepは機能しません。

次のコマンドセットがあります。

s3ls="aws s3 ls $ssyss3/ --recursive --human-readable --summarize"
egrepCommand="egrep '$currentDate|Total'"
totalSize=$(echo $s3ls|$egrepCommand| awk -F 'Total Size:' '{print $2}'|sed '/^$/d')
echo $totalSize

ただし、次のエラーが発生します。

egrep '2019-05-11|Total': command not found

私は何を見逃していますか?

ベストアンサー1

コメントに書かれたままです。コマンド名を作成してegrep '2019-05-11|Total'呼び出してみます。egrep次に、引数ではなく完全なコマンド名が続きます。あなたが望むものは次のような可能性が高いです:

totalSize=$(echo $s3ls| egrep "$currentDate|Total" | awk -F 'Total Size:' '{print $2}'|sed '/^$/d')

必要に応じて変数を使用してパラメータを保持できます。

egrepParm="$currentDate|Total" 
totalSize=$(echo $s3ls| egrep "$egrepParm" | awk -F 'Total Size:' '{print $2}'|sed '/^$/d')

一部の人々は、スクリプトでgrep -E代わりに使用する方が良いと言います。egrep

PS:aliasコマンドはコマンドプロンプト/ターミナルでは機能しますが、スクリプトでは機能しないため、端末でコマンドを試してもスクリプトで機能することは証明されません。 Bash では、type {commandname}名前が実際のコマンドかエイリアスかを確認するために使用されます。egrepこれは一部のUnixバージョンではエイリアスとして使用でき、Ubuntuでは一般的なコマンドです。

おすすめ記事