Twój przykład jest niesamowity,% jest otoczony podwójnymi, prostymi i wstecznymi cudzysłowami. Nie pozostawiając nadziei, że ucieczka cytatu może zadziałać.
tuxayo
Odpowiedzi:
126
Musisz uciec od %znaków. Mają szczególne znaczenie w crontabs:
man (5) crontab:
Percent-signs (%) in the command, unless escaped with backslash (\),
will be changed into newline characters, and all data after the
first % will be sent to the command as standard input.
+1 Bardzo ciekawe, też tego nie wiedziałem. Zaskoczony, że na to nie wpadłem.
Kyle Smith
3
Właśnie wpadłem na to. Używałem date +%Fi był donikąd
Adamo
2
Czy ta składnia ma jakieś użyteczne zastosowanie? Dzięki SHELL=/bin/bash, zawsze mogę przepisać cat %Hello worldjako cat <<<'Hello world'. Nie widzę potrzeby specjalnej składni.
Witiko,
@Witiko Jeśli „specjalna składnia”, o którą pytasz, to ukośnik odwrotny, aby uciec przed procentem, to własne pytanie OP jest przykładem, gdzie jest to potrzebne: argumenty poleceń wymagające procentu, zwłaszcza program daty, który byłby dość popularny w polecenie crontab. Jeśli faktycznie pytasz, dlaczego cron ma tę gotcha w pierwszej kolejności: tzn. Zastępuje podawanie linii zamiast wartości procentowej, to myślę, że pozwala to na podanie w jednym wierszu wymaganym przez crontab „polecenia” składającego się z dwóch lub więcej pomocniczych poleceń.
gwideman
Ten ostatni. I, jak wspomniałem, można zrobić to samo z bash. Nie ma potrzeby zaśmiecania składni Crona.
Witiko,
7
To nie odpowiada bezpośrednio na twoje pytanie, ale sugerowałbym, abyś utworzył plik skryptu w / usr / local / bin (lub ~ / bin lub cokolwiek innego, co jest odpowiednie) i wywołaj go z crona. Łatwiej jest testować i edytować.
Z mojego doświadczenia wynika, że o wiele łatwiej jest utrzymać 50 wierszy w pliku crontab niż 50 małych plików. Z pewnością będziesz chciał zamienić dłuższe skrypty w pliki skryptów, ale zrobienie tego dla jedno-liniowych linii może być przesadą.
Odpowiedzi:
Musisz uciec od
%
znaków. Mają szczególne znaczenie w crontabs:źródło
date +%F
i był donikądSHELL=/bin/bash
, zawsze mogę przepisaćcat %Hello world
jakocat <<<'Hello world'
. Nie widzę potrzeby specjalnej składni.To nie odpowiada bezpośrednio na twoje pytanie, ale sugerowałbym, abyś utworzył plik skryptu w / usr / local / bin (lub ~ / bin lub cokolwiek innego, co jest odpowiednie) i wywołaj go z crona. Łatwiej jest testować i edytować.
źródło