linux shell, awk - вопрос по синтаксису

leoworker
На сайте с 25.02.2019
Offline
47
523

Здравствуйте.

Немного не понятно, почему когда я обрамляю while

while( select in pick ) {

pick[ select ] = select;

}

фигурными скобками, мне выдается ошибка?

awk: line 13: syntax error at or near {

awk: line 14: syntax error at or near }
awk: line 19: syntax error at or near }
awk: line 21: syntax error at or near }

?)))

#!/bin/bash

#

awk -v NUM=$1 -v TOPNUM=$2 '

BEGIN {

if( NUM <= 0 ) NUM = 6;

if( TOPNUM <= 0 ) TOPNUM = 30;

printf( "Pick %d of %d\n", NUM, TOPNUM );

srand();

for( j = 1; j <= NUM; ++j ) {

do {

select = 1 + int( rand() * TOPNUM );

}

while( select in pick )

pick[ select ] = select;

}

for( j in pick ) {

printf( "%s ", pick[ j ]);

}

printf( "\n" );

}

';

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

Экранировать фигурные скобки не пробовали?

\} и \{

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
S
На сайте с 30.09.2016
Offline
469
#2
leoworker:
Немного не понятно, почему когда я обрамляю while

while( select in pick ) {
pick[ select ] = select;
}

фигурными скобками, мне выдается ошибка?

Потому получается кривая невалидная конструкция.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий