System
Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Kwestia
Potrzebuję uzyskać dane wyjściowe jako polecenia, w skrypcie bash, do przechowywania zmiennych.
Przykład
sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d'
To polecenie zwraca następujące wiersze:
email_sender='[email protected]'
email_recipients='[email protected]'
Jak mogę odczytać / uruchomić te dane wyjściowe / wiersze jako polecenia w skrypcie? Czy zapisanie tego wyniku w pliku, a następnie odczytanie go source
wyłącznie za pomocą polecenia?
Próbowałem | source
na końcu polecenia, ale czyta tylko z plików.
Próbowałem echo
na początku, ale to nie przyniosło efektu.
Dzięki.
źródło
for var in email_sender email_recipient email_subject email_attachement etc ; do printf -v "${var}" '%s' "$(grep -oP $var'=\K.*' webcheck-$category.cfg)"; done
Nie spełnia to jednak „prostych” kryteriów.Możesz użyć podstawienia procesu :
źródło
lub
Wynik:
[email protected] [email protected]
źródło
bash read wbudowany ładnie radzi sobie z takimi rzeczami.
read
odczytuje wiersze ze standardowego wejścia do zmiennych.-d ''
wyłącza podział białych znaków, z wyjątkiem znaków nowej linii.-r
wyłącza\
ucieczki.cmdA < <(cmdB)
działa podobnie do cmdB | cmdA, z wyjątkiem poprzedniej, cmdA jest uruchamiany w ~ tej ~ powłoce, zamiast podpowłoki, która jest wymagana, aby odczyt działał zgodnie z oczekiwaniami.źródło
var=value
?