URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1738
[ Назад ]

Исходное сообщение
"Использование shell переменных из AWK"

Отправлено denof , 03-Июн-03 17:04 
DIR=from
NET=192.168.1    
HOST=1    
cat ${DIR}-${NET}.${HOST} | awk '
BEGIN { d=0 }
....
   { system("rm "'${DIR}-{NET}.${HOST}') }
}'
вот такой скриптик, но команда rm не выполняется, потому как...
dir передается как пустой
net - меняется на "192.1680.1"
Почему меняются переменные?
После выхода из awk переменные опять принимают нормальное значение...
ОС FreeBSD4...
Заранее спасибо за ответ!

Содержание

Сообщения в этом обсуждении
"Использование shell переменных из AWK"
Отправлено sas , 04-Июн-03 02:03 
>DIR=from
>NET=192.168.1
>HOST=1
>cat ${DIR}-${NET}.${HOST} | awk '
> BEGIN { d=0 }
>....
>   { system("rm "'${DIR}-{NET}.${HOST}') }
> }'
>вот такой скриптик, но команда rm не выполняется, потому как...
>dir передается как пустой
>net - меняется на "192.1680.1"
>Почему меняются переменные?
>После выхода из awk переменные опять принимают нормальное значение...
>ОС FreeBSD4...
>Заранее спасибо за ответ!


DIR=from
NET=192.168.1    
HOST=1    
cat ${DIR}-${NET}.${HOST} | awk '
BEGIN { d=0 }
....
   { system("rm "'"${DIR}-{NET}.${HOST}"'" ) }
}'


"Использование shell переменных из AWK"
Отправлено denof , 04-Июн-03 10:11 
>   { system("rm "'"${DIR}-{NET}.${HOST}"'" ) }
Спасиб помогло!
Только я не понял почему надо ` в кавычки заключать?

"Использование shell переменных из AWK"
Отправлено sas , 04-Июн-03 14:46 
>>   { system("rm "'"${DIR}-{NET}.${HOST}"'" ) }
>Спасиб помогло!
>Только я не понял почему надо ` в кавычки заключать?
В итоге наиболее безопасно получить е

>>   { system("rm "'"${DIR}-{NET}.${HOST}"'" ) }
>Спасиб помогло!
>Только я не понял почему надо ` в кавычки заключать?

В итоге наиболее безопасно получить получить в shell строку в двойных кавычках, на случай если после подстановки результирующая строка содержит пробелы

system( "rm \"${BLA_BLA_BLA}\"" )

Как мы знаем подстановки не будет внутри одиночных кавычек, значит надо дать шеллу возможность это сделать путем выдирания из под них и склеивания

system( "rm \"'"${BLA_BLA_BLA}"'\"" )

Успехов
--- sas

Кстати я забыл эскейпить внутренние двойные кавычки или это cgi?

:)