Sed problem z przetwarzaniem znaku asterisk

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack »

hej, od pewnego czasu próbuję napisać sobie własny programik w bashu do backupu moich danych i w sumie wszystko ładnie idzie ale nie mogę sobie poradzić z przetworzeniem tekstu w sed, który zawiera w sobie znak '*' szczegóły poniżej

jest sobie zmienna

Kod: Zaznacz cały

exclude_list="test.txt plik.log *.conf"
do której to dopisuję pliki lub katalogi, których nie chce backupować (pliki/katalogi z tej zmiennej dopisywane są do tar z opcją --exclude w innej części programu)
następnie mam okna dialogowe w terminalu i tak:

Kod: Zaznacz cały

....
wyszukaj=`cat backup_config.sh  | grep exclude_list=`
							wyszukaj1=`cat backup_config.sh  | grep exclude_list= | cut -f2 -d '"'`
							dialog --title "Wprowadzanie danych" --inputbox "Podaj katalogi i pliki, które NIE mają być objęte backupem, pliki i katalogi podawaj odzielone od siebie jedynie spacją.\nObecnie NIE archiwizowane dane to: " 16 90 "$wyszukaj1" 2> Tmp/exclude_list.tmp
							zmien=`cat Tmp/exclude_list.tmp`
							spr_dane1=`cat Tmp/exclude_list.tmp | grep --regexp='"'`
							spr=$?
							if [ $spr -eq 1 ]; then
							{
								spr_dane2=`cat Tmp/exclude_list.tmp | grep '\\\'`
								spr2=$?
								if [ $spr2 -eq 1 ]; then
								{		
									 sed -i "s:$wyszukaj:exclude_list=\"$zmien\":g" backup_config.sh
										kod16=$?
										if [ $kod16 -eq 0 ]; then
										{
											dialog --title "Informacja" --backtitle " $backtitle " --msgbox "Operacja zakończyła się sukcesem!" 12 40 	
											opcje_ogolne						 
										}
										else
										{
											dialog --title "Informacja" --backtitle " $backtitle " --msgbox "Operacja zakończyła się błędem, coś jest nie tak....!" 12 40 	
											opcje_ogolne
										}
										fi
...
wydaje mi się, że mój problem znajduje się w poleceniu

Kod: Zaznacz cały

 sed -i "s:$wyszukaj:exclude_list=\"$zmien\":g" backup_config.sh
ponieważ jeśli ze zmiennej

Kod: Zaznacz cały

exclude_list
usunę znak * to wszystko działa dobrze. Macie może jakieś pomysły jak to obejść??

Pozdrawiam :)
Awatar użytkownika
webster
Użytkownik
Posty: 1269
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: webster »

Spr

Kod: Zaznacz cały

sed -i "s#${wyszukaj}#exclude_list=\"${zmien}\"#g" backup_config.sh
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook
Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack »

No nie niestety to też nie zadziałało :) A można jakoś sprawdzić jaki albo czy w ogóle wyskakuje mi jakiś błąd, w konsoli nic nie dostaje bezpośrednio...
Próbowałem już wcześniej rozwiązań ze strony http://stackoverflow.com/questions/1020 ... er-in-bash
czyli coś w stylu

Kod: Zaznacz cały

GLOBIGNORE="*"
curl_opts="-s --noproxy * -O"
curl $curl_opts "$1"  ## no filename expansion
ale też nie pomogło.
Awatar użytkownika
webster
Użytkownik
Posty: 1269
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: webster »

a Możesz pokazać wynik echo "sed -i "s#${wyszukaj}#exclude_list=\"${zmien}\"#g" backup_config.sh" przed Jej wykonaniem ?
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook
Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack »

wyświetliło mi dokładnie tak

Kod: Zaznacz cały

sed -i s#exclude_list="test.txt plik.log *.conf"#exclude_list="test.txt plik.log *.conf test2.file"#g backup_config.sh
Sajmon
Moderator
Posty: 1215
Rejestracja: 2004-05-22, 23:19
Lokalizacja: Graz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: Sajmon »

$ cat backup_config.sh
exclude_list="test.txt plik.log *.conf"

Kod: Zaznacz cały

sed -i 's#exclude_list="test.txt plik.log \*.conf"#exclude_list="test.txt plik.log \*.conf test2.file"#g' backup_config.sh
$ cat backup_config.sh
exclude_list="test.txt plik.log *.conf test2.file"
[url=http://polish-32053322658.spampoison.com][img]http://pics8.inxhost.com/images/sticker.gif[/img][/url]
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack »

Prawde mówiąc to nie rozumiem o co chodzi Ci Sajmon... chyba , że o znak \ ale to nie za bardzo rozwiązuje mój problem, ponieważ zmienna exclude_list jest zmieniana w oknach dialogowych... a poza tym zakazałem wpisywania znaku \ ponieważ gdyby ktoś postawił go na końcu zmiennej exclude_list przed zamykającym znakiem " (cudzysłów) to rozwaliło by mi to cały plik :)
Narazie obszedłem problem tak, że jak ktoś dodaje coś do zmiennej exclude_list ze znakiem *.cos to z automatu zmienia mi znaki *. na ciąg liczb a następnie w innym pliku przy tarowaniu i pobieraniu danych z tej zmiennej, zmieniam na chwile ten ciąg liczb spowrotem na znaki *.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: mina86 »

No bo sobie tylko życie utrudniasz:

Kod: Zaznacz cały

sed s#^exclude_list=".*"#exclude_list="$zmien"#
Nie zmienia to jednak faktu, że $zmien może zawierac dajmy na to “#”.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
sl_slack
Użytkownik
Posty: 47
Rejestracja: 2008-04-05, 16:19
Lokalizacja: Bydgoszcz
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: sl_slack »

No wiem, że sobie utrudniam :) ale to dlatego, że nie mogę wyszukać rozwiązania... mina86 Twój przykład już wcześniej też testowałem i nie działał.
Ogólnie problem rozwiązałem "okrężną drogą" ale działającą ;)
btw jeśli ktoś by znalazł sposób bardziej profesjonalny to zawsze chętnie wypróbuje...

pozdrawiam
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Sed problem z przetwarzaniem znaku asterisk

Post autor: mina86 »

Ah no tak, bo zapomniałem o cytowaniu:

Kod: Zaznacz cały

sed "s#^exclude_list=.*#exclude_list='$zmien'#"
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
ODPOWIEDZ