LINUX.ORG.RU

Экранирование в переменной для awk

 


0

1

Все привет, подскажите пожалуйста. В Bash мне нужно задать переменную,типа:

i=$(echo "{null=Test, 1=7.5.1}" | awk -F "=" {'print $3'} | awk -F "}" {'print $1'})

Проблема в том, что bash в скрипте понимает $3 и $1 как входные параметры, которых нет. Как это можно исключить? Такое исполнение тоже не катит:

i=`echo "{null=Test, 1=7.5.1}" | awk -F "=" {'print $3'} | awk -F "}" {'print $1'}`
Спасибо!

Ответ на: комментарий от whitedevil

А ты выполнял из bash скрипта?Из консоли все работает.

#!/bin/bash
i=$(echo "$1" | awk -F "=" {'print $3'} | awk -F "}" {'print $1'})
echo $i
Где входной параметр {null=Test, 1=7.5.1}. Соответственно получаю:
line 3: 2=: command not found
1=7.5.1}

Matisse ()

echo "{null=Test, 1=7.5.1}" | awk -F "=" {'print $3'} | awk -F "}" {'print $1'}

Сударь, писать программы в упоротом виде крайне не рекомендуется.

Иначе ведь и действительно можно не заметить, что здесь разделитель первого уровня — запятая, а не знак равенства; а второго — знак равенства, а вовсе не фигурная скобка.

Zmicier ★★★★★ ()