Bash - Linux - mini-commander

0

Witam,
mam do napisania cos w stylu commandera... ma on wykonywac proste czynnosci... cos mam zle, ale nie potrafie znaleŹĆ bledu... POMOCY

#!/bin/bash


function lista
{
echo ls
} 

function istnieje
{
echo "podaj nazwe pliku/katalogu: "
read nazwa
x=`ls -d $nazwa`
y=`ls -f $nazwa`
if [ $x -eq $nazwa ];
then
echo "To jest katalog i ma nastepujace uprawnienia: "
uprawnienia=`ls -l $nazwa`
echo $uprawnienia

elif [ $y -eq $nazwa ];
then echo "To jest plik i ma nastepujace uprawnienia: "
uprawnienia=`ls -l $nazwa`
echo $uprawnienia

elif
echo "Nie ma takiego pliku/katalogu. Czy chcesz go utworzyc? 1 (tak), 2 (nie)."
read u
if [ $u - eq 1 ];
then echo "Chcesz utworzyc plik, czy katalog? 1-plik ; 2-katalog "
	read pk
	echo "Podaj jego nazwe: "
	read pkn
	if [ pk -eq 1 ];
	then touch $pkn
	elif [ pk -eq 2 ];
	then mkdir $pkn 
fi
}


function przenies_kopiuj
{
echo "Podaj nazwe pliku lub katalogu: "
read nazwa2
xx=`ls -d $nazwa2`
yy=`ls -f $nazwa2`
if [ $xx -eq $nazwa2 ];
then echo "To jest katalog - 1 (przenies), 2 (kopiuj)"
	read przeko
	echo "Podaj sciezke docelowa: "
	read sciezka
		if [ $przeko -eq 1 ];
		then mv -f $nazwa2 $sciezka
		elif [ $przeko -eq 2 ];
		then cp -R -f $nazwa2 $sciezka
		fi

if [ $yy -eq $nazwa2 ];
then echo "To jest plik - 1 (przenies), 2 (kopiuj)"
	read przeko
	echo "Podaj sciezke docelowa: "
	read sciezka
		if [ $przeko -eq 1 ];
		then mv -f $nazwa2 $sciezka
		elif [ $przeko -eq 2 ];
		then cp -f $nazwa2 $sciezka
		fi
}

#main
for (( ; ; ));
do

echo " "
echo "Witaj w mini-commanderze, wybierz czynnysc, ktora chcesz wykonac przypisana pod dana cyfre: " 
echo "1 - Wyswietl liste aktualnego katalogu" 
echo "2 - Sprawdz, czy istnieje jakis plik/katalog. Jesli nie, to czy go utworzyc. Jesli tak, to jakie ma prawa" 
echo "3 - Przenies lub kopiuj plik/folder" 

read funkcja

case "$funkcja" in
"1") lista ;; 
"2") istnieje ;;
"3") przenies_kopiuj ;;
*) echo "Wybrales zly klawisz..."
esac
done
0

Coś masz źle, to coś nie działa. Łaskawie może byś określił dokładnie, czym objawia się "coś nie działa"...

0

"syntax error near unexpected token `}' "
a gdy zlikwiduje ten blad wyskakuje:
"syntax error: unexpected end of file "

przegladajac poradniki i kursy basha, to w teorii mam dobrze... podejrzewam, ze cos jest zle w instrukcji case (w odwolaniach do funkcji), ale nigdzie nie moge znalezc konkretnej odpowiedzi na to

0

Mogę się mylić, ale chyba bash jest wrażliwy na spacje ... pousuwaj wszystkie PO instrukcjach

0

Na moje oko brakuje kilku "fi". Odpal skrypt przez bash -x ./skrypt, to zobaczysz trochę więcej.

0

Nauczyciel mi powiedzial, ze "elif" nie konczy sie fi, tylko ze wystarczy jedno "fi" do tego glownego "if"...

0

pousuwalem wszystkie spacje po instrukcjach i nadal nie dziala... jakies inne pomysly?

0

W całym kodzie brakuje czterech fi - więcej nie powiem, bo kod wygląda fatalnie pod względem estetycznym i prawdopodobnie nie tylko.
Jeśli #N to ilość wystąpień instrukcji N, to #if - #fi ma wynosić zero.

0

dodałem te "fi" i nadal nie działa... wyskakuje ciągle ten sam błąd...

1 użytkowników online, w tym zalogowanych: 0, gości: 1