• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wyciąc z String uzysknaego z komendy locate, ostatni węzeł.

VPS Starter Arubacloud
0 głosów
180 wizyt
pytanie zadane 29 sierpnia 2016 w Inne języki przez ShiroUmizake Nałogowiec (46,300 p.)

Na początek podam treść zadania.

Napisz skrypt która będzie zmieniał nazwy plików w katalogu podanym jako zmienna środowiskowa KATALOG w następujący sposób:

Każde wystąpienie twojego indeksu zamieni na Twoje imię.

indeks: 14216

Imię: Patryk

pliki: document14216 , 14216text.txt >> po rezultacie dokumentPatryk , Patryktext.txt

A jak zmienna jest pusta, to wypisz błąd.

Tak wygląda treść zadania. A oto kod:

#To sa dane poszukiwane
myStudentIndex="14216"
myName=Patryk
#Strzelam, że o to mu chodziło
echo "Podaj katalog ktory chcesz uzyc do zmiany nazw pliku"
read KATALOG
#Sprawdzam czy jest pusta, tu jeszcze działa ok.
if [ $KATALOG ];then
	echo "Dziala"
#Po przeleceniu wielu stacków, ta komenda przypadła mi najbardziej.
#Zauważ , że BASH nie wie jaka jest ściezka (więc pwd, ls odpadają)
	filesOfCatalog=$(locate  $KATALOG)
#Ok jest ścieżka do katalogu 
	echo "PATH OF CATALOG: $filesOfCatalog"
#Szuka klucza po liście (chyba tak to się nazywa?)
	for files in $filesOfCatalog
	do
#Nie wiem dlaczego to działa, ale działa jest nazwa pliku (skopiowane z jakiegoś stacka)
		fileName=${files##*/}
		echo $fileName
#Wchodzi 
				if [ "$fileName" == "$myStundetIndex" ];then
#Tworzy nowego stringa
				newNameFile=$myName$fileName
				echo "Podmieniam nazwe pliku: $files na nowa nazwe $newNameFile"
# I tu dupa. NIE DZIALA. Gdyż files wskazuje wraz z nazwą pliku do którego chcemy zmienić nazwę
				mv $files  $files/$newNameFile
				fi
	done
else
echo "Nie podałeś żadnego parametru"
fi

Czy ktoś jest mi w stanie pomóc :D? Jak wyciągnąć poprawną sciężke albo podać inny sposób? Jestem zielony z basha i przyswajam go bo ... musze. 

Jak rozwiązać problem by szukał podciąg znaków w ciągu znaków? (Jak się !@#^! to prostu przekaże to zadanie dla C, bo tam wydaje mi się, że będzie to łatwiejsze do zrobienia.

 

Z góry dziękuje za wszelką pomoc :)

 

1 odpowiedź

0 głosów
odpowiedź 30 sierpnia 2016 przez kantekand Obywatel (1,180 p.)

staraNazwa - to masz (wraz z pełną ścieżką)
nowaNazwa - to musisz uzyskać zamieniając index na imię (wraz z pełną ścieżką) - w ifie po sprawdzeniu nazwy

nowaNazwa=${staraNazwa/$myStudentIndex/$myName}

na końcu wywołujesz
mv staraNazwa nowaNazwa

 

tutaj przykład zamiany indexu na imię:

#!/bin/bash
myStudentIndex="14216"
myName="Patryk"
przyklad="14216 ma zadanie w bashu"
echo $przyklad
nowaNazwa=${przyklad/$myStudentIndex/$myName}
echo "po zmianie: " $nowaNazwa

 

Podobne pytania

0 głosów
0 odpowiedzi 118 wizyt
0 głosów
0 odpowiedzi 347 wizyt
0 głosów
1 odpowiedź 474 wizyt
pytanie zadane 15 grudnia 2015 w Inne języki przez Rivi Początkujący (320 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...