» »

[Linux-shell] Izpis najvišjega števila

[Linux-shell] Izpis najvišjega števila

Cvenemir ::

Lp.

Izdelati moram kratko skripto, ki izmed podanih števil izpiše najvišjega (programski jezik shell). Ker sem v tem jeziku popolnoma nov, bi prosil za nekaj napotkov. Do sedaj sem napisal tole:

#!/bin/bash
$ chmod +x iskanje.sh

#Definicija spremenljivke
max=0

#Zanka za iskanje najvišjega števila
for i in "tukaj avtomatski test samodejno vnese števila"
do 
  if [ $i> $max ] then  
  max = $i
  fi
done

echo Najvišje Število je: "$i"


Napaka, ki jo test javi se glasi:
./iskanje.sh: line 14: syntax error near unexpected token `fi'
./iskanje.sh: line 14: ` fi'

amacar ::

#!/bin/bash
if [ $# = 0 ]; then 
	echo "Ni vhodnih parametrov" 
else 
max=$1 
for index in $*; # sprehod po vseh vhodnih parametrih
do
	if [ $index -gt $max ]; then 
		max=$index 
	fi 
done 
echo "Največje število:" $max 
fi 

Cvenemir ::

Sem poizkusil naslednjo kodo, ampak test mi se vedno javi sledečo napako:

Zaganjam ./iskanje.sh 8 6 -5 10
./iskanje.sh 8 6 -5 10
Najvišje število je: 
./iskanje.sh: line 6: max: command not found
./iskanje.sh: line 11: [: 8: unary operator expected
./iskanje.sh: line 11: [: 6: unary operator expected
./iskanje.sh: line 11: [: -5: unary operator expected
./iskanje.sh: line 11: [: 10: unary operator expected
Napaka v skripti


To je samo en primer testa, ki se izvede med preverjanjem

logout ::

Zgoraj podana koda, ki jo je napisal amacar, čisto lepo deluje. Ti si očitno dodal nekaj svojega, kar pokvari delovanje.

L.p., Kloko

Cvenemir ::

Koda verjamem da deluje, ampak kje se dobijo vrednosti, katere razvršča. Ker mi pri avtomatskem testu še vedno javlja napako, da ni nobenega izhodnega podatka.

[img]http://shrani.si/f/21/j0/2e1uLnsn/repin...

Zgodovina sprememb…

  • spremenil: Cvenemir ()

logout ::

> ampak kje se dobijo vrednosti, katere razvršča
Ob zagonu skripte jih podaš v ukazni vrstici, pa saj si to že sam v svojem primeru napisal...

> Ker mi pri avtomatskem testu še vedno javlja napako
Kaj je to "avtomatski zagon"? Opiši malo bolj natančno, kaj počneš.

L.p., Kloko

Cvenemir ::

BESEDILO NALOGE:
Naloga od Vas zahteva, da napišete ukazno skripto, katera bo poiskala največje število iz seznama, podanega kot vhodni parameter, in ga izpisala na standardni izhod. Skripta naj reši problem s pomočjo for zanke.


Torej...na sistemu za vaje imamo avtomatski test, ki preveri delovanje skripte tako, da preizkusi delovanje skripte z več različnimi kombinacijami števil. Za primer bom vzel tole kombinacijo: 4 12 9 10.

Pri tej in vseh ostalih kombinacijah mi javi napako:
Najvišje število je: (tukaj bi moglo pisat 12, ampak je prazno)
./iskanje.sh: line 6: max: command not found
./iskanje.sh: line 11: [: 2: unary operator expected
./iskanje.sh: line 11: [: 7: unary operator expected
./iskanje.sh: line 11: [: 5: unary operator expected
./iskanje.sh: line 11: [: 1: unary operator expected
Napaka v skripti

amacar ::

Dela pri tebi v konzoli? Si kaj spreminjal mojo kodo?

Cvenemir ::

Edino kar sem spremenil je to, da sem namesto "index" uporabil "i". Ko pa kliknem "Run in terminal", se terminal za sekundo pojavi, nato pa zapre.

logout ::

Testira se tako, da odpreš terminal in potem znotraj terminala pišeš ukaze, "run in terminal" ne bo v redu za tvoj primer.

Zakaj zadeva skozi tisti vaš avtomatski test ne gre, je težko reči, če ne vemo, kako je ta avtomatski test sestavljen. Izgleda, kot da na nek način pokvari skripto, ker javlja napako v šesti vrstici, čeprav je spremenljivka max deklarirana v peti vrstici.

L.p., Kloko

drola ::

Glede na to, da je ravno za 1 vrstico zamika, morda doda kaj v smislu #!/bin/sh spredaj? torek drug okus shella... ?
https://drola.si

gnomee ::

Vidim, da imate še kar iste naloge pri UOS :) Mislim, da bi spodnja koda mogla delat..

#!/bin/bash
max=$1
for i in $*; do 
	if [ $i -gt $max ]; then 
		max=$i
	fi
done
echo "Največji element: "$max

BigWhale ::

S pomocjo for zanke?! Cemu? ;>

#!/bin/bash
echo 'Najvecji element: ' `echo "$*" | tr " " "\n" | sort -n -r | head -1`


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[bash] Sortiranje fotografij po datumu

Oddelek: Programiranje
101450 (1011) Mike0
»

[bash] štetje vrstic

Oddelek: Programiranje
12837 (734) Brane2
»

Ukazno programiranje

Oddelek: Programiranje
51289 (964) Invictus
»

Bash, terminal,ubuntu

Oddelek: Operacijski sistemi
111453 (1094) Zero0ne
»

[Bash] - težave z IF stavki

Oddelek: Programiranje
102164 (2063) R33D3M33R

Več podobnih tem