Muszę zdefiniować zmienną środowiskową o wartości zadania cron. Wartość byłaby następująca:
"0 0 * * * *"
Zostanie on wykonany jako polecenie bash na Linuksie. Czy to możliwe? Jak mogłem to osiągnąć?
Muszę zdefiniować zmienną środowiskową o wartości zadania cron. Wartość byłaby następująca:
"0 0 * * * *"
Zostanie on wykonany jako polecenie bash na Linuksie. Czy to możliwe? Jak mogłem to osiągnąć?
Odpowiedzi:
Tak, to możliwe. Nie musisz robić nic specjalnego, z wyjątkiem regularnej składni języka programowania.
Na przykład w Bashu użyłbyś:
export myvar="0 0 * * *"
W Pythonie:
os.environ["myvar"] = "0 0 * * *"
Lub jeśli wartość powinna rzeczywiście zawierać cytaty, jak w przykładzie:
export myvar="\"0 0 * * *\""
os.environ["myvar"] = "\"0 0 * * *\""
Prawdopodobnie widzisz problemy z robieniem tego w sh / bash, ponieważ echo $myvar pojawia się, aby wyświetlić nieprawidłową wartość. Ale wartość przechowywana w zmiennej jest prawdopodobnie doskonale - problem polega na tym, jak próbujesz wydajność wartość.
W sh / bash ekspansja zmiennych odbywa się jako oddzielny krok przed rozszerzanie symboli wieloznacznych. Jeśli nazwa zmiennej nie jest cytowana, oryginalne polecenie echo $myvar najpierw rozszerzy się do poprawnej wartości echo 0 0 0 * * - i następnie wykonywane są czynności dzielenia słów i rozszerzania globu, zamieniając dane wyjściowe w listę nazw plików.
(Tak, może się to również zdarzyć w czasie przydzielania. Jednak znacznie częściej widziałem, że ludzie zapominają o tym w czasie produkcji; przypisanie wartości spacjami prawdopodobnie naturalnie przypomina ludziom o cytowaniu.)
Prawidłowy sposób wyświetlania zmiennej to echo "$myvar". (Do sprawdzać typ zmiennej i surowa zawartość, ma bash declare -p myvar.)