The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"передать парамерт в awk"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"передать парамерт в awk"  
Сообщение от GHopper email(ok) on 29-Апр-08, 13:39 
Здравствуйте!

#!/bin/sh
iVal = 666;
ls -al | awk '{printf("%s - %d\n", $0, 666)}'

Не могу вместо 666 передать значение переменной iVal.
ls -al | awk '{printf("%s - %d\n", $0, $iVal)}' не работает.

Помогите решить проблемку. Я еще слаб в шеле...

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "передать парамерт в awk"  
Сообщение от phpcoder email(??) on 29-Апр-08, 13:41 
>Здравствуйте!
>
>#!/bin/sh
>iVal = 666;
>ls -al | awk '{printf("%s - %d\n", $0, 666)}'
>
>Не могу вместо 666 передать значение переменной iVal.
>ls -al | awk '{printf("%s - %d\n", $0, $iVal)}' не работает.

awk -v iVal="666" '{...}'


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "передать парамерт в awk"  
Сообщение от phpcoder email(??) on 29-Апр-08, 13:43 
>>Здравствуйте!
>>
>>#!/bin/sh
>>iVal = 666;
>>ls -al | awk '{printf("%s - %d\n", $0, 666)}'
>>
>>Не могу вместо 666 передать значение переменной iVal.
>>ls -al | awk '{printf("%s - %d\n", $0, $iVal)}' не работает.

ls -al | awk -v iVal="666" '{printf("%s - %d\n", $0, iVal)}'


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "передать парамерт в awk"  
Сообщение от angra (ok) on 01-Май-08, 05:47 
В общем случае при одинарных кавычках шелл вообще никак не интерпретирует содержимое. При двойных происходит "интерполяция переменных", то есть вместо $что_нибудь, подставляется значение переменной что_нибудь. Проблема возникает при использовании perl, awk и других язвков в которых для переменных также используется $. Как один из вариантов использовать двойные кавычки вместе с экранированием при помощи \. Например так

iVal=666;ls -al | awk "{printf(\"%s - %d\n\",\$0, $iVal)}"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "передать параметр _из_ shell"  
Сообщение от Andrey Mitrofanov on 09-Июл-08, 00:11 
>iVal=666;ls -al | awk "{printf(\"%s - %d\n\",\$0, $iVal)}"

Третий %) вариант: чтобы не заниматься "экранированием всего остального" -

iVal=666;ls -al | awk '{printf("%s - %d\n",$0, '$iVal')}'

В более общем случае (~ $iVal содержит пробелы) может потребоваться писать
'... ... ...'"$iVal"'... ... ...'

ps: Disclaimer: GNU/Linux, bash, gawk -- YMMV

pps: эээ... гм, :) кстати: '{$0=$0" - '$iVal'";print}'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру