次のコマンドセットがあります。
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では一般的なコマンドです。