Portál AbcLinuxu, 10. května 2025 04:18
grep $DEFINEKEY souborv proměnné DEFINEKEY mám uloženo:
-e "access-list"Po spuštění nedostanu žádný výstup (odpovídající řádky v souboru jsou) pokud pro kontrolu provedu příkaz:
grep $DEFINEKEY soubortak dostanu očekávaný výstup:
grep -e "access-list" souborPokud tento příkaz zapíšu přímo do skriptu, tak vše funguje jak má. Nesetkal se s tím už někdo? Předem děkuji za rady.
-e "access-list"
jsou dva parametry (klíč a hodnota), které však předáváš jako jeden.
aa xx aa zzv souboru, ze kterého je načtena proměnná DEFINEKEY jsem změnil její obsah na:
-e xx -e zza funguje to správně. Pokud zadám do proměnné:
-e aa zztak se dle očekávání interpretuje zz jako název souboru. Když do proměnné vložím jedno z:
-e "aa zz" -e 'aa zz'dostanu chybovou hlášku:
grep: zz": Adresář nebo soubor neexistuje nebo grep: zz': Adresář nebo soubor neexistujeProblém je v podivné interpretaci uvozovek, které tam teď nejsou potřeba, ale v budoucím použití asi budou a na ten grep ještě navazuje sed kterému jsou argumenty plněny stejně a tam jednotlivé vzory už obsahují mezery.
Problém je v podivné interpretaci uvozovek, které tam teď nejsou potřeba, ale v budoucím použití asi budouPokud to potrebujete kvuli podivnych znaku, tak je potreba je osetrit pri vkladani do promenne. Pokud vam jde o mezery (jakehokoliv druhu), takje to trochu horsi. "${VAR}" nepomuze, protoze pak budete mit problem, ktery popisoval Kit. Asi nejprehlednejsi pak bude pouzvat pole:
$ cat soubor 1111 2222 3333 4444 1221 "22"33 "x y z"abc $ PAR=("-e" '"x y z"' "-e" "33") $ grep "${PAR[@]}" soubor 3333 "22"33 "x y z"abc
na ten grep ještě navazuje sedPro pana krale a proc? Proc to nevyresit rovnou v tom sedu? Nebo tim nejak testujete forkovani, popr. jde o obfuskaci retezenim?
... a na ten grep ještě navazuje sed ...V tom případě je ten grep zřejmě zbytečný.
access-list
. ale "access-list"
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.