|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vadim Goncharov 2:5020/400 25 Dec 2006 08:24:44 To : Victor Sudakov Subject : Re: cvs admin -m -------------------------------------------------------------------------------- Hi Victor Sudakov! On Mon, 25 Dec 2006 02:51:02 +0000 (UTC); Victor Sudakov wrote about 'Re: cvs admin -m': >> test$ echo "test line 1" >testmsg >> test$ echo "test line 2" >>testmsg >> test$ cvs admin -m 1.1:"`cat testmsg`" test.s >> RCS file: /Users/timon/cvsr/test/test.s,v >> done VS> Что за шелл у тебя? Любой sh-compatible. VS> У меня под tcsh вот так: VS> $ jot -w line 12 > log.txt VS> $ cvs admin -m 1.2:"`cat log.txt`" file.txt VS> cvs admin: while processing more than one file: VS> cvs [admin aborted]: attempt to specify a numeric revision VS> $ VS> $ cvs admin -m 1.2:"test " file.txt VS> RCS file: /home/sudakov/tmp/hren/q1/file.txt,v VS> done VS> $ VS> Откуда получается "more than one file", не могу понять. Потому что tcsh игнорирует кавычки и разворачивает строку в несколько аргументов тем же макаром, что и без кавычек, в отличие от нормального шелла, передающего в этом случае. Он вообще говно, особенно для скриптования (целый документик по теме был). P.S. Демонстрация. Мой комментирующий текст выделен цитированием. > Пишем иллюстративную программку #include <stdio.h> int main(int argc, char *argv[]) { printf("argc=%d\n", argc); while (argc > 1) { printf("%s|", argv[1]); argc--; argv++; } printf("\n"); return 0; } > и компилим её: % gcc -o echoer echoer.c > после чего запускаем в нормальном шелле (zsh): % ./echoer `cat realpath.txt` argc=66 REALPATH(1)|Справочник|основных|команд|FreeBSD|REALPATH(1)|HАЗВАHИЕ|realpath|--| возвращает|преобразованный|физический|путь|СИHТАКСИС|realpath|путь|ОПИСАHИЕ|Прог рамма|realpath|использует|функцию|realpath(3)|для|вычисления|всех|символических| ссылок?),|дополнительных|символов|'/',|а|так|же|ссылок|на|/./|и|/../|внутри|пути .|СТАТУС|ЗАВЕРШЕHИЯ|Программа|realpath|возвращает|0|в|случае|успеха|и|>0,|если|п роизошла|ошибка.|СМОТРИ|ТАКЖЕ|realpath(3)|ИСТОРИЯ|Команда|realpath|впервые|появи лась|во|FreeBSD|4.3.| % ./echoer "`cat realpath.txt`" argc=2 REALPATH(1) Справочник основных команд FreeBSD REALPATH(1) HАЗВАHИЕ realpath -- возвращает преобразованный физический путь СИHТАКСИС realpath путь ОПИСАHИЕ Программа realpath использует функцию realpath(3) для вычисления всех символических ссылок?), дополнительных символов '/', а так же ссылок на /./ и /../ внутри пути. СТАТУС ЗАВЕРШЕHИЯ Программа realpath возвращает 0 в случае успеха и >0, если произошла ошибка. СМОТРИ ТАКЖЕ realpath(3) ИСТОРИЯ Команда realpath впервые появилась во FreeBSD 4.3.| > Видим, что указание кавычек возмело эффект - шелл передал программе > содержимое целиком. Теперь запускаем csh и повторяем то же в нём: % tcsh % ./echoer `cat realpath.txt` argc=66 REALPATH(1)|Справочник|основных|команд|FreeBSD|REALPATH(1)|HАЗВАHИЕ|realpath|--| возвращает|преобразованный|физический|путь|СИHТАКСИС|realpath|путь|ОПИСАHИЕ|Прог рамма|realpath|использует|функцию|realpath(3)|для|вычисления|всех|символических| ссылок?),|дополнительных|символов|'/',|а|так|же|ссылок|на|/./|и|/../|внутри|пути .|СТАТУС|ЗАВЕРШЕHИЯ|Программа|realpath|возвращает|0|в|случае|успеха|и|>0,|если|п роизошла|ошибка.|СМОТРИ|ТАКЖЕ|realpath(3)|ИСТОРИЯ|Команда|realpath|впервые|появи лась|во|FreeBSD|4.3.| % ./echoer "`cat realpath.txt`" argc=18 REALPATH(1) Справочник основных команд FreeBSD REALPATH(1)|HАЗВАHИЕ| realpath -- возвращает преобразованный физический путь|СИHТАКСИС| realpath путь|ОПИСАHИЕ| Программа realpath использует функцию realpath(3) для вычисления всех| символических ссылок?), дополнительных символов '/', а так же ссылок|на /./ и /../ внутри пути.| |СТАТУС ЗАВЕРШЕHИЯ| Программа realpath возвращает 0 в случае успеха и >0, если произошла|ошибка.|СМОТРИ ТАКЖЕ| realpath(3)|ИСТОРИЯ| Команда realpath впервые появилась во FreeBSD 4.3.| > Видим, что tcsh сделал это несовместимым образом - засунул каждую > строку в свой аргумент. Так что читаем древнюю статью Csh Programming > Considered Harmful (http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/) и > выкидываем его нафиг. -- WBR, Vadim Goncharov. ICQ#166852181 mailto:vadim_nuclight@mail.ru [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight] --- slrn/0.9.8.1 on FreeBSD 4.11/i386 * Origin: Nuclear Lightning @ Tomsk, TPU AVTF Hostel (2:5020/400@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/10359eaf05b05.html, оценка из 5, голосов 10
|