Prijava
Korisničko ime:

Lozinka:

remember me

Zaboravili lozinku?

Registrirajte se!
Glavni menu
Potraga
Tko je online
16 korisnika je online (10 korisnika cita Diskusije)

članovi: 0
Gosti: 16

više...
HULK-Diskusije - Programiranje - shell skripta ne radi
Chat WIKI Kontakt
HULK Forum Index
   Programiranje
  shell skripta ne radi

Pregledavanje ovog Threada:   1 Anonimnih Korisnika

 

 Dno   Prethodna tema   Sljedeca tema
12>
  •  Ocjena Threada
      Ocijenite ovaj Thread
      Izvrsno
      Dobro
      Prosjecno
      Loše
      Užasno
Pošiljatelj Thread
shell skripta ne radi
#1
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
#!/bin/bash
cd test
valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_."
i=0
r=""
find . | while read f
do
d=length f
while i -lt d do
c=substr(f,i,1)
k=valid_find_char(c)
if (k=="-1") {c="_"}
r=r+c
i=i+1
done
mv f r
done


Pokušavan ovo pokreniti cilo popodne i ne ide. Jel kome od vas ide?
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 07.09.2008 14:25:42
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#2
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
Jedna falinka. Triba ispod drugog do opet staviti r=""
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 07.09.2008 16:08:44
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#3
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
#!/bin/bash
cd test
valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_."
i=0
find . | while read f
do
r=""
d=$(echo ${#f})
while [i -lt $d] do
c=$(f:i:1)
k=`echo $valid | grep -i $c`
if [$k -eq ""]
then c="_"
fi
r=$r+$c
i=$i++
done
mv "$f" "$r"
done

Ne radi ni ovako dorađena. Na koji način mogu znati u čemu je problem?
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 22.09.2008 17:05:16
Izradi PDF od ove poruke Ispis
Vrh
  •  v-v
      v-v
Re: shell skripta ne radi
#4
Padawan
Pridružen: 04.01.2005
Od irc.freenode.net
Poruke: 83
Level : 8
HP : 0 / 176
MP : 27 / 9927
EXP : 6
Grupa:
Registered Users
UrednikNovosti
UrednikLinkova
UrednikDogadjanja
Offline
A da nam malo pojasniš sto to namjeravaš napisati? Imaš podosta krivih statementa, pomiješanih varijabli i sl.

Evo, slijedeće bis trebao moći pokrenuti

#!/bin/bash
valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_."
i=0
find . | while read f; do
        r=""
        d=$(echo ${#f})
        while [ $i -lt $d ]; do
               c=$(echo ${f:i:1})
                if [ "$c" = "" ]; then
                        c="_"
                fi
                k=`echo $valid | grep -i $c`
                if [ "$k" = "" ]; then
                        c=""
                fi
                r=$r$c
                let i=i+1
        done
        echo "mv $f $r"
done


Nisam skužio sto bi trebalo raditi pa ni ne radi ništa , ali glavno da se pokreće
Postano : 22.09.2008 18:16:21
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#5
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
Hvala na ispravkama. Sam bih to teško napravio, jer se u shell programiranje ne razumijem, a skripta bi trebala rinejmati podfoldere i fajlove tako da zamjeni sve "messy characters" sa "_". Još jednom hvala i nadam se daljnoj pomoći.
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 23.09.2008 3:01:29
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#6
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
#!/bin/bash
cd test
valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_."
find . | while read f; do
j=1
        d=$(echo ${#f})
        while [ $j -lt $d ]; do
               c=$(echo ${f:j:1})
                k=`echo $valid | grep -i $c`
                if [ "$k" = "" ]; then
                        c="_"
                fi
                r=$r$c
                let j=j+1
      done
  r=$(echo ${r:1:d-2})
#if ["$f" -ne "$r"]; then
 mv "$f" "$r" 
#fi
r=""
done


Ovo radi kako želim. Još bih molio pomoć. Niz valid se vjerojatno može napisati jednostavnije koristeći [A-Z] i sl, ali mi ne uspjeva.
Kod mv sam pokušao dodati da se ne izvršava ali mi if ne radi, pa je u komentaru.
I još najblentavija izjava, ja ovu skriptu ne razumjem. Što je find . | while read f; do
To sam kopirao iz jedne skripte koju sam našao na netu. Ostalo sam guglao za sintaksu naredbi. Unaprijed hvala na pomoći!
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 23.09.2008 4:44:52
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#7
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
Još jedna stvar. Guglao sam za valjanim znakovima za ime fajla/foldera u gnome, ali nisam ništa našao. Ima li još valjanih karaktera da dodam u niz valid?
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 23.09.2008 5:19:20
Izradi PDF od ove poruke Ispis
Vrh
  •  v-v
      v-v
Re: shell skripta ne radi
#8
Padawan
Pridružen: 04.01.2005
Od irc.freenode.net
Poruke: 83
Level : 8
HP : 0 / 176
MP : 27 / 9927
EXP : 6
Grupa:
Registered Users
UrednikNovosti
UrednikLinkova
UrednikDogadjanja
Offline
Citat:
Niz valid se vjerojatno može napisati jednostavnije koristeći [A-Z] i sl, ali mi ne uspjeva.


Evo ti onda umjesto bash skripte jedne veeelike komande

find . -type f | while read I; do N=$( echo -n $I | tr -cs 'a-zA-Z0-9./' '_' ); if [ "$I" != "$N" ]; then echo "$I -> $N"; mv "$I" "$N"; fi done;


Nebih znao koji su sve dozvoljeni znakovi :\
Postano : 23.09.2008 5:54:21
Izradi PDF od ove poruke Ispis
Vrh
Re: shell skripta ne radi
#9
Linux Master
Pridružen: 29.12.2005
Od Šibenik
Poruke: 788
Level : 25
HP : 0 / 607
MP : 262 / 32388
EXP : 30
Grupa:
Registered Users
Offline
Stvarno je velika i ne razumijem je. Osim okvirno. Trebao bih znati detaljno šta radi pojedini dio koda.
_________________
-- Davor R. Bergam
Experiments, no experiences!!

Moja web stranica o Linuxu
Postano : 23.09.2008 6:05:45
Izradi PDF od ove poruke Ispis
Vrh
  •  v-v
      v-v
Re: shell skripta ne radi
#10
Padawan
Pridružen: 04.01.2005
Od irc.freenode.net
Poruke: 83
Level : 8
HP : 0 / 176
MP : 27 / 9927
EXP : 6
Grupa:
Registered Users
UrednikNovosti
UrednikLinkova
UrednikDogadjanja
Offline
Ispričavam se, mala greškica (tr -cs je pisalo umjesto tr -c) je bila zbog čega je više nečitljivih znakova zamijenjivala sa jednim _ a ne više njih. Slijedeće je u redu:

find . -type f | while read I; do N=$( echo -n $I | tr -c 'a-zA-Z0-9./' '_' ); if [ "$I" != "$N" ]; then echo "$I -> $N"; mv "$I" "$N"; fi done;


No ajmo je onda sistematizirati:

#!/bin/bash
find . -type f | while read I; do 
	N=$( echo -n $I | tr -c 'a-zA-Z0-9./' '_' );
	if [ "$I" != "$N" ]; then
		echo "$I -> $N";
		mv "$I" "$N";
	fi
done;



i proći pojedine dijelove:


find . -type f | while read I; do
Traži fileove te loopa za svaki file. Filename je sadržan u I.

N=$( echo -n $I | tr -c 'a-zA-Z0-9./' '_' );
S echo puštamo početni filne name kroz tr -c koji zamjenjuje svaki znak koji ne matcha a-z A-Z 0-9 . ili / sa _. Echo ima -n parametar jer bi inače dodavao newline znak koji bi nam tr kasnije zamjenio sa _ pa bi nam svaki file imao dodatni _ na kraju, što ne želimo. Novi filename (sa izmijenjenim znakovima) spremamo u varijablu N.


if [ "$I" != "$N" ]; then
	echo "$I -> $N";
	mv "$I" "$N";
fi
Ukoliko početni i završni filename nisu isti (što znači da su imali neželjenih znakova unutra pa ih je gornji red zamjenio) ispišemo korisniku što i gdje renameamo te to učinimo.
Postano : 23.09.2008 6:23:40
Izradi PDF od ove poruke Ispis
Vrh
 Vrh   Prethodna tema   Sljedeca tema
12>

 


 Ne možete pokrenuti novu temu.
 Možete citati teme.
 Ne možete odgovarati na poruke.
 Ne možete uredivati svoje poruke.
 Ne možete brisati svoje poruke.
 Ne možete dodavati nove ankete.
 Ne možete glasati u anketama.
 Ne možete dodavati fileove porukama.
 Ne možete slati poruke bez odobrenja.
Copyright © 1995-2009 HULK web team. Sva prava pridržana. RSS. Engine: XOOPS