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

Исходное сообщение
"вопрос про кавычки в sh"

Отправлено artek , 26-Июл-10 09:01 
я совсем только начинаю работать с текстовыми оболочками и иногда встречаются то двойные то одинарные кавычки и я не могу понять в чем отличие. подскажите кто-нибудь или скажите, где поискать инфу.

Содержание

Сообщения в этом обсуждении
"вопрос про кавычки в sh"
Отправлено DeadLoco , 26-Июл-10 11:48 
>я совсем только начинаю работать с текстовыми оболочками и иногда встречаются то
>двойные то одинарные кавычки и я не могу понять в чем
>отличие. подскажите кто-нибудь или скажите, где поискать инфу.

Не с текстовыми оболочками, а с интерпретаторами командной строки.
Отличие в подстановке параметров. В двойных кавычках параметры подставляются, в одинарных - нет. В бектиках (`blabla`) закавыченное выполняется, результат подставляется.

Читать, как всегда, надо man (|ba|z|tc)sh


"вопрос про кавычки в sh"
Отправлено imya , 26-Июл-10 14:06 
Спасибо!
не сказать, чтобы там было все понятно, но тем не менее.
бектики - это, надо полагать, backquotes?



"вопрос про кавычки в sh"
Отправлено DeadLoco , 26-Июл-10 17:54 
>бектики - это, надо полагать, backquotes?

Да, они самые. Но современные стандарты предлагают более очевидный синтаксис вызова для подстановки:

VARIABLE=$( foo $bar )
эквивалентно
VARIABLE=`foo $bar`


УПД.

И, чтобы два раза не вставать, напоминаю о существовании функции eval:

FNAME="/etc/fstab"
COMMAND1="cat"
COMMAND2="ls -l"
INDEX=1

RESULT=$( eval \$COMMAND$INDEX $FNAME )

echo $RESULT


"вопрос про кавычки в sh"
Отправлено artek , 27-Июл-10 07:11 
>VARIABLE=$( foo $bar )
>VARIABLE=`foo $bar`
>FNAME="/etc/fstab"
>COMMAND1="cat"
>COMMAND2="ls -l"
>INDEX=1
>RESULT=$( eval \$COMMAND$INDEX $FNAME )
>echo $RESULT

:-)
Благодарю!
Я на секундочку представил, что мы с вами говорим на равных, и я всё это понимаю.
Исключительно приятная фантазия!