Portál AbcLinuxu, 9. května 2025 05:29

Dotaz: Pomoc se SKRIPTEM

16.12.2013 12:42 Martin | skóre: 3
Pomoc se SKRIPTEM
Přečteno: 385×
Odpovědět | Admin
Zdravim potreboval bych pomoct se skriptem neco jsem uz zacal ale nedari se mi to rozjet jediny je co funguje je zadani cesty a nazvu a ostatini vyhodnocovaci podminky to neprojde, nevim kde mam chybu, pomozte prosim.

#!/bin/bash

#

# Napište skript, který zálohuje (zarchivuje) soubory obsahující určitý řetězec

# např: řetězec "jan" aby se týkalo uživatele "jana""jano", atd,... z nějaké cesty.

# ceta řetězce nech je zadaný po spuštění skriptu. Uskutečníte kontrolu cety.

#

echo -n "zadej cestu slozky, ze ktere chces zalohovat: "

read cesta

if [ -f $cesta ] ; then

echo "cesta je soubor, zkuz to znovu"

exit

else

echo -n "zadej retezec souboru, ktery chces nechat zalohovat (např: řetězec "jan" týkase to i "jana", "jano", atd,...): "

read retezec

if [ -d $cesta ] ; then

echo "cesta je adresar, zkopiruji retezec $retezec"

cp $retezec

fi

fi

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 16.12.2013 13:01 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Pomoc se SKRIPTEM
Odpovědět | | Sbalit | Link | Blokovat | Admin
  1. ty dvojite uvozovky uvnitr te napovedy v zavorce musis budto escapovat, nebo to cele obalit apostrofama
  2. pri tom kopirovani ti chybi cil kam kopirovat
Tohle nejak funguje, ikdyz nevim jestli je to to co jsi chtel..
#!/bin/bash

echo -n "zadej cestu slozky, ze ktere chces zalohovat: "
read cesta
if [ -f $cesta ] ; then
  echo "cesta je soubor, zkuz to znovu"
  exit
else
  echo -n 'zadej retezec souboru, ktery chces nechat zalohovat (např: řetězec "jan" týkase to i "jana", "jano", atd,...): '
  read retezec
  if [ -d $cesta ] ; then
    echo "cesta je adresar, zkopiruji retezec $retezec"
    cp ${cesta}/${retezec}* zalohovat_sem
  fi
fi 
Don't panic!
16.12.2013 13:25 Martin | skóre: 3
Rozbalit Rozbalit vše Re: Pomoc se SKRIPTEM
jo je to na 90% to co jsem chtel jen jeste dotaz

Ohledne toho retezce zadam tu cestu a pak ten retezec nemuzu si vzpomenout jak tam dat aby to kopirovalo vse, kdyz zadam napr prvni tri znaky a aby to kopirovalo vse co obsahuje dalsi znaky.

napriklad zadam "ja" a v cilove slozce jsou soubory obsahujici nazev "jak", "jako", ... a aby toto zkopirovalo vse co zacina zadanymi znaky
Řešení 1× (Martin (tazatel))
Tarmaq avatar 16.12.2013 14:50 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Pomoc se SKRIPTEM
zkousel jsi vubec ten kod?
$ ls
foo  script.sh  zalohovat_sem

$ ls zalohovat_sem/

$ cat script.sh
#!/bin/bash

echo -n "zadej cestu slozky, ze ktere chces zalohovat: "
read cesta
if [ -f $cesta ] ; then
  echo "cesta je soubor, zkuz to znovu"
  exit
else
  echo -n 'zadej retezec souboru, ktery chces nechat zalohovat (např: řetězec "jan" týkase to i "jana", "jano", atd,...): '
  read retezec
  if [ -d $cesta ] ; then
    echo "cesta je adresar, zkopiruji retezec $retezec"
    cp ${cesta}/${retezec}* zalohovat_sem
  fi
fi

$ ls foo/
jana  janica  omg

$ ./script.sh
zadej cestu slozky, ze ktere chces zalohovat: foo
zadej retezec souboru, ktery chces nechat zalohovat (např: řetězec "jan" týkase to i "jana", "jano", atd,...): jan
cesta je adresar, zkopiruji retezec jan

$ ls zalohovat_sem/
jana  janica
Don't panic!
16.12.2013 16:14 Martin | skóre: 3
Rozbalit Rozbalit vše Re: Pomoc se SKRIPTEM
Jo zkousel jsem to. zapnul jsem terminal dal jsem "bash skript.sh" nebo "sh skript.sh" zadal jsem cestu \etc\passwd a mela se vyhodit ta hlaska ze se nejedna o slozku ale pustilo me to dal at zadam ten retezec tak to zadam a skonci skript. i pokud zadam slozku \home\martin a zadma nejaky soubor tak to taky skonci a nic se neprovede
16.12.2013 16:31 Martin | skóre: 3
Rozbalit Rozbalit vše Re: Pomoc se SKRIPTEM
Uz vse v pohede ja blbec to zadaval spatne. Diky tvemu odkazu jsem to jeste parkrat vyzkousel a uz je to OK

DIKY

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.