我正在尝试创建 bash 脚本。当我运行 AWS 命令时,结果底部显示“对象总数”。如果对象超过 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
谢谢大家的帮助
德文郡