Forum » Programiranje » [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:
Napaka, ki jo test javi se glasi:
./iskanje.sh: line 14: syntax error near unexpected token `fi'
./iskanje.sh: line 14: ` fi'
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:
To je samo en primer testa, ki se izvede med preverjanjem
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
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...
[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
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
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
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
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [bash] Sortiranje fotografij po datumuOddelek: Programiranje | 1443 (1004) | Mike0 |
» | [bash] štetje vrsticOddelek: Programiranje | 831 (728) | Brane2 |
» | Ukazno programiranjeOddelek: Programiranje | 1279 (954) | Invictus |
» | Bash, terminal,ubuntuOddelek: Operacijski sistemi | 1448 (1089) | Zero0ne |
» | [Bash] - težave z IF stavkiOddelek: Programiranje | 2155 (2054) | R33D3M33R |