Почему cvs зарегистрировался бы в разности вместо файла?

Общий совет: если Вы имеете два уровня вложения, избегаете использования одинарных кавычек во внутренней команде и используете одинарные кавычки вокруг внешней команды.

Дополнительная подсказка: не используйте обратные галочки - `…` - для выполнения кода вместо этого используйте $(…) вокруг этого. Долларовыми круглыми скобками является в значительной степени DWIM ('Делают то, что я имею в виду') когда дело доходит до вложенных кавычек; одинарные левые кавычки имеют тайные, зависимые от оболочки правила.

watch -n 3 'for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "rusage[mem=7000]" "$x"; done'

При необходимости в одинарных кавычках в единственно заключенной в кавычки команде можно использовать '\''. Думайте об этих четырех символах как о способе заключить одинарную кавычку в кавычки в одинарных кавычках, хотя с технической точки зрения это создается как конец единственно заключенная в кавычки строка, добавьте литеральную одинарную кавычку и запустите новую единственно заключенную в кавычки строку (все еще добавленный к текущему слову).

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

cmd='for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "rusage[mem=7000]" "$x"; done'
watch_cmd='watch -n 3 "$cmd"'

Этот ответ не характерен для zsh. Zsh не приносит ничего главного здесь. Можно сохранить немного заключения в кавычки, потому что нет никакой потребности в двойных кавычках вокруг замен команды, и иногда существуют способы использовать созданные-ins а не внешние команды, которые уменьшают потребности заключения в кавычки, но базовые проблемы совпадают с в других оболочках.

О, и между прочим, отметьте это watch выполнит Вашу команду в sh, не в zsh. Если Вы хотите выполнить команду в zsh, необходимо работать

watch -n 3 -x zsh -c "$cmd"

на Debian/Ubuntu, и

export cmd
watch -n 3 'exec zsh -c "$cmd"'

(еще больше заключения в кавычки!) в другом месте.

2
20.01.2014, 20:51
2 ответа

Вы уверены, что это была 'разность' того файла и предыдущего файла?

Я aske, потому что, если два разработчика работают над той же строкой (строками) того же файла, второго cvs commit может заставить cvs оставлять две версии той же строки (строк) на месте, с дополнительными строками, которые имеют'>>>>>' или' <<<<<' в них.

Сделать cvs log thefileinquestion и посмотрите то, на что похожа история фиксации. Можно видеть проблему там.

3
27.01.2020, 22:01
  • 1
    , Другими словами, это - неразрешенный конфликт слияния. Некоторый человек должен решить, как разрешить конфликт. –  David Schwartz 28.10.2011, 03:24

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

Если cvs status или сбой cvs commit указывает на неразрешенные конфликты, для которых необходимо перерыть конфликтующий файл >>>>>> строки и выбирают который из двух конфликтующих частей (на до ++++ другой от этого до <<<<) допустимый, редактирование, и объедините 'непротиворечивую' версию.

Можно также использовать xxdiff для неслияния этих конфликтов. Та программа также availble со многими дистрибутивами

1
27.01.2020, 22:01

Теги

Похожие вопросы