Mam skrypt bash, który jest używany w CGI. CGI ustawia zmienną środowiskową $ QUERY_STRING, odczytując wszystko po adresie ?
. Na przykład http://example.com?a=123&b=456&c=ok ustawia QUERY_STRING=a=123&b=456&c=ok
.
Gdzieś znalazłem następujący brzydotę:
b=$(echo "$QUERY_STRING" | sed -n 's/^.*b=\([^&]*\).*$/\1/p' | sed "s/%20/ /g")
który będzie ustawiony $ b, aby cokolwiek zostało znalezione w $ QUERY_STRING dla b
. Jednak mój skrypt ma już ponad dziesięć parametrów wejściowych. Czy istnieje prostszy sposób automatycznego przekonwertowania parametrów w $ QUERY_STRING na zmienne środowiskowe, które mogą być użyte przez bash?
Może ja po prostu użyć pętli for jakiegoś, ale byłoby jeszcze lepiej, gdyby scenariusz był na tyle silny, aby automatycznie wykryć każdy parametr a może zbudować tablicę, która wygląda mniej więcej tak:
${parm[a]}=123 ${parm[b]}=456 ${parm[c]}=ok
Jak mogę napisać kod, aby to zrobić?
Właśnie zauważyłem, że jestem naprawdę zatrzymany na Bash 3. Czy ktoś ma proste, bezpieczne rozwiązanie, które nie będzie wiązać tablice asocjacyjne? – User1
Zobacz moją zmienioną odpowiedź na alternatywę dla tablic asocjacyjnych (przeczytaj także stronę, do której się przyłączyłem ([BashFAQ/006] (http://mywiki.wooledge.org/BashFAQ/006)). –
ten link pomoże Ci rozwiązać problem łatwo http://stackoverflow.com/questions/17021640/how-to-extract-the-data-using-sed-command – amar