bash 스크립트를 만들려고합니다. AWS 명령을 실행하면 결과 하단에 "Total Objects"라고 표시됩니다. 개체가 50개보다 많으면 경고를 발생시키고 싶습니다.
aws s3 ls test.domain.com/dir1/dir2/dir3/ --human-readable --summarize
value=$( grep -ic "Total Objects")
if [ $value -gt 50 ]
then
echo "Warning"
fi
업데이트된 코드는 다음과 같습니다.
value=$(aws s3 ls test.domain.com/dir1/dir2/dir3/ --human-readable --summarize | grep -ic "Total Objects")
if [ $value -gt 10 ];
then
echo "Warning"
fi
내가 뭘 잘못하고 있는지 알려주세요.
답변1
명령 대체에 합계를 결합합니다 aws
.grep
$()
value=$(aws s3 ls test.domain.com/dir1/dir2/dir3/ --human-readable --summarize | grep -ic "Total Objects")
현재 aws
STDOUT에서 출력을 받고 있으며 grep
작업할 파일이 없습니다.
답변2
$ value=$(echo 'Total Objects: 53 Total Size: 7.0 MiB '|grep -oP '(?<=Total Objects: )\d+')
$ echo $value
53
답변3
나는 다른 길을 가기로 결정했고 이 코드를 사용하여 내가 원하는 것을 달성했습니다.
#!/bin/bash
value=$(aws s3 ls bucket/dir1/dir2/ -- recursive --human-readable --summarize | grep .file type | wc -l)
if [ $value -gt 1000 ];
then
echo "$value Warning"
exit 2
fi
도와주셔서 감사합니다
데번