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

추신: alias 명령은 명령 프롬프트/터미널에서는 작동하지만 스크립트에서는 작동하지 않으므로 터미널에서 명령을 시도한다고 해서 스크립트에서 작동한다는 것이 증명되지는 않습니다. Bash에서는 type {commandname}이름이 실제 명령인지 별칭인지 확인하는 데 사용됩니다. egrep이것은 일부 Unix 버전에서 별칭으로 사용할 수 있으며, Ubuntu에서는 일반적인 명령입니다.

관련 정보