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 :)