bash scripting

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
xxxYURAxxx
Сообщения: 68
ОС: Ubuntu 7.10

bash scripting

Сообщение xxxYURAxxx »

yura@pc:~$ start_cmd="sudo -u yura sh -c \"cd /home/yura && ls -la\""
yura@pc:~$ $start_cmd
/home/yura: 1: Syntax error: Unterminated quoted string


подскажите плз как пофиксить
Не народ для форума, а форум для народа...

home: ubuntu 7.04
laptop: ubuntu 7.10
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: bash scripting

Сообщение Goodvin »

xxxYURAxxx писал(а):
06.05.2010 17:28
yura@pc:~$ start_cmd="sudo -u yura sh -c \"cd /home/yura && ls -la\""
yura@pc:~$ $start_cmd
/home/yura: 1: Syntax error: Unterminated quoted string


подскажите плз как пофиксить

Пофиксить что именно?
Вы пробовали хотя бы перевести и понять смысл выданного Вам сообщения об ошибке?
Там вполне себе недвусмысленно указана причина проблемы.

Что Вы вообще пробовали делать для решения проблемы?
Это важно, ибо от этого зависит какого уровня давать Вам советы.

P.S.
http://translate.google.ru/?hl=ru&tab=...quoted%20string
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: bash scripting

Сообщение Ленивая Бестолочь »

start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'
iУведомление от модератора
переношу в Работа в командной строке
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
xxxYURAxxx
Сообщения: 68
ОС: Ubuntu 7.10

Re: bash scripting

Сообщение xxxYURAxxx »

Ленивая Бестолочь писал(а):
06.05.2010 17:39
start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'


подскажите как правильно заэскейпить строку, чтобы выполнялась
Не народ для форума, а форум для народа...

home: ubuntu 7.04
laptop: ubuntu 7.10
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5403
ОС: Gentoo

Re: bash scripting

Сообщение /dev/random »

Ленивая Бестолочь писал(а):
06.05.2010 17:39
start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'

Это всё равно ничего не даст, тут проблема в другом.
Кавычки интерпретируются _до_ подстановки переменных. В том, что подставлено из переменных, кавычки - просто символы, не имеющие какого-то специального значения. А здесь делается попытка ими сгруппировать "cd /home/yura && ls -la" в один параметр. Не выйдет.

Чтобы этого избежать, следует использовать команду eval.
eval "$start_cmd"
вместо
$start_cmd
При этом параметр, переданный команде eval, будет парситься заново, с нуля, включая находящиеся в нём кавычки.
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: bash scripting

Сообщение Goodvin »

xxxYURAxxx писал(а):
06.05.2010 17:41
Ленивая Бестолочь писал(а):
06.05.2010 17:39
start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'


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

Может Вы таки расскажете какую цель перед собой ставите?
Опишите словами - чего хотите добиться?

Вы хотите вызывать на выполнение нечто, что будет задаваться через содержимое строковой переменной?
Или Вы просто хотите в значение переменной "засунуть" результат выполнения команды?
Подходы несколько разные, поэтому лучше уточнить задачу.
Спасибо сказали:
Аватара пользователя
xxxYURAxxx
Сообщения: 68
ОС: Ubuntu 7.10

Re: bash scripting

Сообщение xxxYURAxxx »

Goodvin писал(а):
06.05.2010 17:51
xxxYURAxxx писал(а):
06.05.2010 17:41
Ленивая Бестолочь писал(а):
06.05.2010 17:39
start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'


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

Может Вы таки расскажете какую цель перед собой ставите?
Опишите словами - чего хотите добиться?

Вы хотите вызывать на выполнение нечто, что будет задаваться через содержимое строковой переменной?
Или Вы просто хотите в значение переменной "засунуть" результат выполнения команды?
Подходы несколько разные, поэтому лучше уточнить задачу.


я хотел вынести команду, чтобы не писать в дркгом месте
но т.к. она выполняется в одном месте, то я выкинул ненужную переменную
Не народ для форума, а форум для народа...

home: ubuntu 7.04
laptop: ubuntu 7.10
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: bash scripting

Сообщение SLEDopit »

xxxYURAxxx писал(а):
06.05.2010 17:28
cd /home/yura && ls -la
какая странная конструкция.
чем ls -la /home/yura не угодило?
xxxYURAxxx писал(а):
06.05.2010 17:56
я хотел вынести команду, чтобы не писать в дркгом месте
но т.к. она выполняется в одном месте, то я выкинул ненужную переменную
ничего не понял. честно (:
может вам стоит посмотреть в сторону alias'ов в баше?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5403
ОС: Gentoo

Re: bash scripting

Сообщение /dev/random »

SLEDopit писал(а):
06.05.2010 18:02
ничего не понял. честно (:

Полагаю, это значит, что проблему он обошёл и тема его больше не интересует.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: bash scripting

Сообщение drBatty »

SLEDopit писал(а):
06.05.2010 18:02
какая странная конструкция.
чем ls -la /home/yura не угодило?


учитывая, что перед этим стоит sudo -u yura, то можно просто ls -la ~
или cd && ls -la
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: