我正在尝试包含这个
du -s *|awk '{ if ($1 > 3000) print }'
在一个shell脚本中,我想将“3000”参数化。然而,由于已经在使用
$1
,我不确定该怎么做。以下尝试失败了:size=$1
du -s *|awk '{ if ($1 > $size) print }'
我该如何在上面的第一个脚本中传递一个参数来代替3000?
在将shell变量传递给awk时,尽可能使用awk的-v
选项。这比四面八方都加引号更加“干净”。
size="$1"
du -s *| awk -v size="$size" '$1>size'
单引号会抑制扩展,因此:
du -s *|awk '{ if ($1 > '"$1"') print }'
size=$1
du -s *|awk '{ if ($1 > '$size') print }'
你可以在 awk
命令行上设置变量:
du -s * | awk '{ if ($1 > threshold) print }' threshold=$1
threshold
将没有值。 - ghostdog74
{if ($1 > $size) print}
相当于$1>size
。 - ghostdog74size=$1; du -s *|awk '{ $1>size }'
不起作用...不确定你的评论是什么意思。 - Dan Rosenstark{if ($1 > $size) print}
和$1>size
是一样的意思。请查看我的答案以获取更清晰的图片。 - ghostdog74