Skocz do zawartości
Marc_b.

Problem Ze Skryptem Pod Linuksa

Rekomendowane odpowiedzi

Mam do zrobianie skrypt,wkleje moze tresc zdania

"Napisać skrypt o nazwie „skrypt_05.sh”. Skrypt ma pobierać jeden parametr,

będący nazwą interpretera powłoki (np. „bash”), należy sprawdzać, czy podano parametr i czy

istnieje interpreter powłoki o takiej nazwie. Dla zadanego poprzez parametr interpretera, skrypt

ma wyświetlać dla ilu użytkowników, ten interpreter jest interpreterem domyślnym. Wyświetlona

lista ma zostać posortowana według ilości użytkowników, od liczby największej, do

najmniejszej."

no i fajnie,napisalem skrypt,tylko problem ze nie do konca dziala tak jak powinien :mur: ,wyglada tak

"#!/bin/bash

 

if [ $# -ne "1" ]; then

echo "Niewlasciwa liczba parametrow!!";

echo "Sposob uzycia `basename $0`: [iterpreter]";

exit;

fi

 

if [ -e /bin/"$1" ]; then

echo "Jest!";

else

echo "Nie ma takiego iterpretera";

exit;

fi

iterpreter=$1;

awk -F: ' $7~/\/'$iterpreter'$/ { licz+=1; }

END {print "Razem "licz; }' /etc/passwd > temp.tmp

awk -F: ' $7~/\/'$iterpreter'$/ { print $1; } ' /etc/passwd | sort -k 1 >> temp.tmp

cat temp.tmp

rm -f temp.tmp

 

 

 

Dla was poprawienie tego to pewnie kilka minut a mi bardzo pomoze,a gory dziekuje

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#!/bin/bashif [ $# -ne "1" ]; then  echo "Niewlasciwa liczba parametrow!!";  echo "Sposob uzycia `basename $0`: [interpreter]";  exit;fiif [ ! -e /bin/"$1" ]; then  echo "Nie ma takiego interpretera";  exit;fishell=$1;echo "Razem:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | wc -lecho "Uzytkownicy:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | sort

W zadaniu nie ma nic o tworzeniu plików, więc można to uprościć. Jeśli trzeba do plików zapisać to wystarczy przekierować wyjście poprzez operator ">>". Nie rozumiem zaś ostatniego zdania tego zadania. W tym przypadku można posortować jedynie alfabetycznie (chyba że coś przekręciłeś w treści polecenia).

Edytowane przez bigfan

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

hmm, przeczytalem jeszcze raz polecenie i tego ostatniego zdania takze nie rozumiem.

nom teraz skrypt ma rece i nogi bigfan ;) pozwolilem sobie go jeszcze usprawnic

 

#!/bin/bashif [ $# -ne "1" ]; then echo "Niewlasciwa liczba parametrow!!"; echo "Sposob uzycia `basename $0`: [interpreter]"; exit;fiif [ ! -e /bin/"$1" ]; then echo "Nie ma takiego interpretera"; exit;fishell=$1;ilosc=`cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | wc -l`;if [ $ilosc = "0" ]; then    echo "Nikt nie uzywa takiej powloki";else    echo "Razem: $ilosc";    echo "Uzytkownicy:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | sortfi

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bez sensu. A jeśli jest /usr/local/bin/bash?

Polecam plik /etc/shells ;]

Poza tym po co wyskakiwać z awk które nie zawsze jest dostępne? Istnieje coś takiego jak 'cut' - w tym wypadku 'cut -f1 -d":"' ;]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Słuszna uwaga z /etc/shells i cut, choć mało jest systemów bez awk. Całość będzie bardziej uniwersalna. Upał (przynajmniej ten wrocławski) daje się we znaki ;-)

Edytowane przez bigfan

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ha, nigdy wczesniej nie widzialem tego pliku /etc/shells

mam w nim sh, bash, tcsh, csh, esh, ksh, zsh, sash, z tym ze: esh, ksh, zsh nie mam w ogole na kompie. wiec jednak u mnie lepiej sprawdziloby sie sprawdzanie w /bin + ew. /usr/local/bin

my fault ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W przypadku tego zadania w zupełności wystarczy zawartość /etc/shells. Uruchamianie find na / w przypadku dużej ilości danych może nieco negatywnie wpłynąć na szybkość działania skryptu. Poza tym myślę, że zadanie miało przede wszystkim nauczyć wykorzystania skryptów shellowych i paru dodatkowych poleceń w celu wyfiltrowania konkretnych informacji a nie wyszukiwania drobnych niuansów typu położenie plików wykonywalnych itp.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...