Shell脚本中的命令行参数?

时间:2010-03-01 11:24:37

标签: bash shell

我想包含这个

du -s *|awk '{ if ($1 > 3000) print }'

在shell脚本中,但我想参数化3000.但是,由于$1已被使用,我不知道该怎么做。这完全失败了:

size=$1
du -s *|awk '{ if ($1 > $size) print }'

如何在上面的第一个脚本中传递参数代替3000?

4 个答案:

答案 0 :(得分:4)

将shell变量传递给awk时,尽可能尝试使用awk的-v选项。这比在周围引用

更“干净”
size="$1"
du -s *| awk -v size="$size" '$1>size'

答案 1 :(得分:3)

单引号禁止扩展,所以:

du -s *|awk '{ if ($1 > '"$1"') print }'

答案 2 :(得分:3)

size=$1
du -s *|awk '{ if ($1 > '$size') print }'

答案 3 :(得分:1)

您可以在命令行上设置awk个变量:

du -s * | awk '{ if ($1 > threshold) print }' threshold=$1