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
подскажите плз как пофиксить
bash scripting
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 68
- ОС: Ubuntu 7.10
bash scripting
Не народ для форума, а форум для народа...
home: ubuntu 7.04
laptop: ubuntu 7.10
home: ubuntu 7.04
laptop: ubuntu 7.10
-
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: bash scripting
xxxYURAxxx писал(а): ↑06.05.2010 17:28yura@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 Уведомление от модератора переношу в Работа в командной строке
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
- Сообщения: 68
- ОС: Ubuntu 7.10
Re: bash scripting
Ленивая Бестолочь писал(а): ↑06.05.2010 17:39start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'
подскажите как правильно заэскейпить строку, чтобы выполнялась
Не народ для форума, а форум для народа...
home: ubuntu 7.04
laptop: ubuntu 7.10
home: ubuntu 7.04
laptop: ubuntu 7.10
-
- Администратор
- Сообщения: 5403
- ОС: Gentoo
Re: bash scripting
Ленивая Бестолочь писал(а): ↑06.05.2010 17:39start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'
Это всё равно ничего не даст, тут проблема в другом.
Кавычки интерпретируются _до_ подстановки переменных. В том, что подставлено из переменных, кавычки - просто символы, не имеющие какого-то специального значения. А здесь делается попытка ими сгруппировать "cd /home/yura && ls -la" в один параметр. Не выйдет.
Чтобы этого избежать, следует использовать команду eval.
eval "$start_cmd"
вместо
$start_cmd
При этом параметр, переданный команде eval, будет парситься заново, с нуля, включая находящиеся в нём кавычки.
Спасибо сказали:
-
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: bash scripting
xxxYURAxxx писал(а): ↑06.05.2010 17:41Ленивая Бестолочь писал(а): ↑06.05.2010 17:39start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'
подскажите как правильно заэскейпить строку, чтобы выполнялась
Может Вы таки расскажете какую цель перед собой ставите?
Опишите словами - чего хотите добиться?
Вы хотите вызывать на выполнение нечто, что будет задаваться через содержимое строковой переменной?
Или Вы просто хотите в значение переменной "засунуть" результат выполнения команды?
Подходы несколько разные, поэтому лучше уточнить задачу.
-
- Сообщения: 68
- ОС: Ubuntu 7.10
Re: bash scripting
Goodvin писал(а): ↑06.05.2010 17:51xxxYURAxxx писал(а): ↑06.05.2010 17:41Ленивая Бестолочь писал(а): ↑06.05.2010 17:39start_cmd='sudo -u yura sh -c "cd /home/yura && ls -la"'
подскажите как правильно заэскейпить строку, чтобы выполнялась
Может Вы таки расскажете какую цель перед собой ставите?
Опишите словами - чего хотите добиться?
Вы хотите вызывать на выполнение нечто, что будет задаваться через содержимое строковой переменной?
Или Вы просто хотите в значение переменной "засунуть" результат выполнения команды?
Подходы несколько разные, поэтому лучше уточнить задачу.
я хотел вынести команду, чтобы не писать в дркгом месте
но т.к. она выполняется в одном месте, то я выкинул ненужную переменную
Не народ для форума, а форум для народа...
home: ubuntu 7.04
laptop: ubuntu 7.10
home: ubuntu 7.04
laptop: ubuntu 7.10
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: bash scripting
какая странная конструкция.
чем 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Администратор
- Сообщения: 5403
- ОС: Gentoo
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: bash scripting
учитывая, что перед этим стоит sudo -u yura, то можно просто ls -la ~
или cd && ls -la