我有这组命令:
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:别名命令可以在命令提示符/终端中工作,但不能在脚本中工作,因此在终端中尝试该命令并不能证明它可以在脚本中工作。在 bash 中,用于type {commandname}
检查名称是真实命令还是别名。egrep
在某些 Unix 版本中可以作为别名实现,在我的 Ubuntu 中它是一个普通命令。