На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 28.09.2013 19:24
$
$ args="'head -n1' 'tail -n1'"
$ echo $args
'head -n1' 'tail -n1'
$ echo | pee $args
sh: 0: Illegal option -1
sh: 1: Syntax error: Unterminated quoted string
sh: 0: Illegal option -1
sh: 1: Syntax error: Unterminated quoted string
$
ЧЯДНТ?
Интересует не решение конкретной проблемы (она уже решена совершенно другим путём), а именно причина ошибки.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo
Сообщение
/dev/random » 28.09.2013 19:47
Кавычки обрабатываются до подстановки переменных (см. раздел EXPANSION в man bash). Поэтому кавычки внутри переменной - это просто символы, не имеющие специального значения.
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 28.09.2013 20:01
А, вон оно что. А откуда тогда "Unterminated quoted string"?
По идее pee должен был бы попытаться выполнить команду 'head с тремя аргументами -n1', 'tail и -n1'. Однако видно, что он пытается выполнить две команды.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo
Сообщение
/dev/random » 28.09.2013 20:11
Bizdelnick писал(а): ↑ 28.09.2013 20:01
А, вон оно что. А откуда тогда "Unterminated quoted string"?
pee пытается запустить 4 команды:
'head
-n1'
'tail
-n1'
Каждую он передаёт шеллу как самостоятельный скрипт. И уже шелл ругается.
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 28.09.2013 20:15
Да, точно, теперь дошло. Спасибо!
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:
Сообщение
drBatty » 28.09.2013 20:16
Bizdelnick писал(а): ↑ 28.09.2013 19:24
Интересует не решение конкретной проблемы (она уже решена совершенно другим путём), а именно причина ошибки.
а что такое
pee ?
ну а вообще -- да, кавычки они являются самыми обычными символами ПОСЛЕ того, как оказались в переменной.
Код: Выделить всё
$ X=A\"B
$ echo $X
A"B
$ Y=$X
$ echo $Y
A"B
Как видите, ДО того, как они завернулись, мне пришлось поставить бэкслэш.
Bizdelnick писал(а): ↑ 28.09.2013 20:01
А, вон оно что. А откуда тогда "Unterminated quoted string"?
а вот это уже ваша pee видать таким образом распарсила свои параметры.
Hint: use set -x
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 28.09.2013 20:22
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:
Сообщение
drBatty » 28.09.2013 20:42
Bizdelnick
а... Точно! Как же я забыл про мочу кошки!
Вот что думает по этому поводу гуглотранслятор:
Обратите внимание, что в то время как это похоже на тройник, копия вход не отправляется на стандартный вывод, как и тройник делает. Если это требуется, то используйте мочу кошки ...