Skocz do zawartości

Skrypt W Bash


Gość rgabrysiak

Rekomendowane odpowiedzi

Gość rgabrysiak

Witam

Chciałem napisać skrypt który po podaniu 3 parametrów utworzy plik z nazwy podanej jako parametr 1 i2.

Ok z tym sobie poradziłem.

Ale za nic nie wiem jak sprawić aby nazwa była podana w kolejości alfabetycznej (trochę zamieszałem ale postaram się wyjaśnić podaję np. skrypt unix fedora - i jak sprawić aby powstały plik miał nazwę posortowaną alfabetycznie ). :blink:

Uczę się dopiero podstaw Linuksa i myślę że znajomość tworzenia skryptów na pewno może się przydać.

Więc prosze o pomoc (choćby małą wskazówkę)

Odnośnik do komentarza
Udostępnij na innych stronach

To zależy. Możesz chcieć sortować wewnątrz skryptu albo w systemie. Możesz ograniczyć się do 2 parametrów, możesz dopuszczać ich dowolną liczbę. Ogólnie, za pomocą systemowego sortowania, listę parametrów o dowolnej rozsądnej długości posortujesz np. tak:

lista=""
while  [ $1 ]; do
  lista="$lista$1:"
  shift
done
echo $lista    # dla kontroli
lista=`echo $lista | tr ":" "\n" | sort -i | tr "\n" ":"`
echo $lista    # dla kontroli

Najpierw łączymy wszystkie słowa w jedną listę, oddzielając je czymś (dwukropkiem). Potem krajemy tę listę tr-em na wiersze, bo sort operuje na wierszach. Wynik odebrany od sorta sklejamy z powrotem w jeden wiersz, wstawiając zamiast końców wierszy separatory słów. Efekt zapamiętujemy w zmiennej $lista. Możesz jej użyć do skonstruowania np. nazwy pliku.

 

Jeżeli masz tylko 2 parametry, to wyciąganie armii składającej się z pętli, sorta i przekierowań mija się z celem. Wtedy wystarczy warunek:

if [[ $1 < $2 ]]; then
    nazwa=$1$2
else
    nazwa=$2$1
fi
echo $nazwa  # dla kontroli

Powodzenia

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...