Псевдоним в ударе cygwin, кажется, не работает в правильном порядке

Для удара, возможно:

... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump

Лично, я обычно только вставил простые команды мой crontab. Я поместил это в небольшой сценарий и использую сценарий в crontab. Это обладало бы преимуществом не требования % символы, которых оставят (общая crontab ловушка).

обновление сделало это ISO 8601 на комментарий @johan

крон

1
02.03.2011, 18:32
2 ответа

Это - давняя ошибка в расширении псевдонима удара. Я мог воспроизвести его на Debian lenny amd64 с ударом 3.2.29 (1), Debian сжимают i386 с 4.1.5 (1), и Windows XP с Cygwin 1.7.7-1 с ударом 4.1.9 (3).

Несколько экспериментов показывают, что ошибка очень чувствительна к вариациям в том, как псевдоним используется. hgfoo или hgfoo : показывает ошибку, но { hgfoo :; } и (hgfoo) хорошо работать. Используя функцию вместо псевдонима также работает.

Я занялся расследованиями немного, пытаясь извлечь меньший пример. Странность, кажется, происходит от наличия новой строки в псевдониме. Вот простой пример, где удар (3.2.29 или 4.1.9) неправильно себя ведет. Этот псевдоним работает как ожидалось (от моего чтения Единственного Unix v3) под pdksh, ksh93, пепел и zsh под Debian lenny, а именно, oops печать foo bar.

$ alias oops='a=$(echo bar)
> echo foo $a'
$ oops
foo foo echo bar

Ошибка может быть связана с ошибкой, о которой сообщают, о “странных отложенных псевдонимах”, но то обсуждение фокусируется на продолжениях строки (новая строка обратной косой черты), которая не используется здесь.


В любом случае используйте функцию! Псевдонимы для острот, где Вы просто указываете некоторые опции по умолчанию для команды. Функция обладала бы дополнительным преимуществом, которому Вы могли передать аргументы hg:

hgfoo () {
  localChanges=$(hg st -m "$@")
  …
}

¹ я первоначально думал, что это было ошибкой Cygwin, но как ak2 указанный, эта ошибка происходит в соответствии с Linux также.

4
27.01.2020, 23:22
  • 1
    , Это не конкретный Cygwin. Я попробовал его на поле Fedora и получил тот же эффект. Никакая идея, почему, хотя, но это должно относиться, как удар оценивает псевдонимы. исходное изображение –  ak2 03.03.2011, 23:05
  • 2
    @ak2: Действительно это - давняя ошибка расширения псевдонима. (Ошибка, как в, никакая другая оболочка не ведет себя этот путь, я не могу согласовать поведение с POSIX, и я даже не понимаю то, что могло продолжаться под капотом.) Спасибо за предостережение. –  Gilles 'SO- stop being evil' 03.03.2011, 23:52

Я заставил это работать. Это были действительно обратные галочки, вызывающие проблемы. Я осуществил рефакторинг его как

hg st -m | grep -q M

затем проверенный значение выхода grep, который работает отлично.

0
27.01.2020, 23:22

Теги

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