помогите с bash[решено]

QXDM

не понимаю как записать ' в "".
Есть некоторая строка, в которой записаны параметры для некоторой тулзы, возникают проблемы с одинарной кавычкой. Накидал пример:

#!/bin/bash
A="'{ print \$1-0}'"
echo $A
echo 1 | awk $A

вывод:

[localhost rrd]# ./bash.sh
'{ print $1-0}'
awk: cmd. line:1: '{
awk: cmd. line:1: ^ invalid char ''' in expression

ЗЫ. возможно проблема в следующем, нашел что можно добавить set -x для вывода команд:

#!/bin/bash
set -x
A="'{ print \$1-0}'"
echo $A
echo 1 | awk $A

 

+ A=''\''{ print $1-0}'\'''
+ echo ''\''{' print '$1-0}'\'''
'{ print $1-0}'
+ echo 1
+ awk ''\''{' print '$1-0}'\'''
awk: cmd. line:1: '{
awk: cmd. line:1: ^ invalid char ''' in expression

объясните, ткните или подскажите как это исправить?

vall

#!/bin/bash
A='{ print $1-0}'
echo "$A"
echo 1 | awk "$A"
если хочешь именно так то нужен eval
#!/bin/bash
A="'{ print \$1-0}'"
echo $A
echo 1 | eval awk $A

QXDM

зы. исправил.
1) я поправил код, ибо забыл экранировать $ пере 1
2) все решилось вот так: echo 1 | eval awk $A

QXDM

спс =)

vall

да, я тоже исправил :grin:
Но лучше не игратся с этим экранированием.
У "echo" есть башизмы в работе с скейп последовательностями лучше использовать printf
Оставить комментарий
Имя или ник:
Комментарий: