Użyj znaku gwiazdki w wartości zmiennych env

0

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ąć?

freitas
źródło
3
Czy wartość powinna zawierać cytaty, czy nie? W jakim języku piszesz (bash, POSIX shell, csh, python, perl?)
grawity
Witamy w SuperUser! Myślę, że grawity powiedziało to wszystko: tak jak jest, twoje pytanie nie dostarcza wystarczającej ilości informacji, na które można by odpowiedzieć. Proszę edytuj swoje pytanie aby dodać więcej informacji o tym, co próbujesz zrobić i co próbowałeś. Możesz odwołać się do Centrum pomocy po wskazówki dotyczące tego, co należy uwzględnić w pytaniu. Dziękuję Ci.
Nathan.Eilisha Shiraini
@grawity to linux bash
freitas
@ Nathan.EilishaShiraini zrobione
freitas

Odpowiedzi:

2

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.)

grawity
źródło