Параметры командной строки в Shell Script? - PullRequest
4 голосов
/ 01 марта 2010

Я пытаюсь включить это

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

в сценарии оболочки, но я хочу параметризовать 3000. Однако, поскольку $1 уже используется, я не уверен, что делать. Это был полный провал:

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

Как я могу передать параметр вместо 3000 в первом сценарии выше?

Ответы [ 4 ]

4 голосов
/ 01 марта 2010

при передаче переменных оболочки в awk, попробуйте максимально использовать опцию -v в awk. Это будет "чище", чем кавычки

size="$1"
du -s *| awk -v size="$size" '$1>size'
3 голосов
/ 01 марта 2010
size=$1
du -s *|awk '{ if ($1 > '$size') print }'
3 голосов
/ 01 марта 2010

Одинарные кавычки запрещают расширение, поэтому:

du -s *|awk '{ if ($1 > '"$1"') print }'
1 голос
/ 01 марта 2010

Вы можете установить awk переменные в командной строке:

du -s * | awk '{ if ($1 > threshold) print }' threshold=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...