2012-04-22 11 views
0

Мне нужно передать определенное значение из оболочки в файл сценария AWK, но я не знаю, могу ли я это сделать.AWK SHELL Передача значений от оболочки до AWK

#! /bin/bash 

if [ "$2" = "-C" ] && [ "$3" != "" ]; then 

     awk -f SpecCity.awk $1 

elif [ "$2" = "-C" ] && [ "$3" = "" ]; then 

     awk -f CityOnly.awk $1 

fi 

Мне нужно передать значению $ 3 в AWK, который сравнивает его с файлом я укажу, но я не могу это сделать.

Любая идея, как это сделать?

Thankyou

ответ

3

Вы должны быть в состоянии использовать "AWK -v". Например, «awk -v city = $ 3 ...»

Новые версии awk также должны поддерживать массив «ENVIRON []».

Оба варианта обсуждается здесь:

http://unix-school.blogspot.com/2011/09/awk-passing-arguments-or-shell.html

+0

Я использую другую функцию + он не работает, я не знаю, я получаю сообщение об ошибке каждый раз. Я пытаюсь использовать его. возможно, я не использую его правильно. – user1253622

+0

@ user1253622, paulsm4 дал вам правильный ответ. Если он не работает, покажите нам свой скрипт awk –