Передать переменную nawk в bash? - PullRequest
1 голос
/ 20 августа 2011

Я пытаюсь передать переменную nawk в скрипте bash, но на самом деле она не печатает содержимое переменной $commentValue.Все отлично работает, кроме последней части оператора printf.Спасибо!

echo -n "Service Name: "

read serviceName

echo -n "Comment: "

read commentValue

for check in $(grep "CURRENT SERVICE STATE"  $nagiosLog |grep -w "$serviceName" | nawk -F": " '{print $2}' |sort -u ) ; do
    echo $check | nawk -F";" -v now=$now '{ printf( "[%u]=ACKNOWLEDGE_SVC_PROBLEM;"$1";"$2";2;1;0;admin;$commentValue"\n", now)}' >> $nagiosCommand

done

1 Ответ

2 голосов
/ 20 августа 2011

$commentValue находится внутри вызова nawk, поэтому он рассматривается как переменная в nawk, а не как переменная в bash.Поскольку у вас нет такой переменной в nawk, вы ничего не получите там.Сначала вы должны передать переменную "inside" nawk, используя переключатель -v, как вы это делали для переменной now;т.е.:

... | nawk -F";" -v now=$now -v "commentValue=$commentValue"

Обратите внимание на кавычки - они требуются в случае, если $commentValue содержит пробел.

...