Anunţ

Caută printre mesajele de pe forum înainte de a scrie unul nou!
Formulează corect întrebarea sau problema pe care o ai.
Respectă regulile forumului și Codul de Conduită!

#1 26 May 2016 01:51:09

Unhask
Membru nou
Înregistrat: 26 May 2016
Mesaje: 2

Problema Shellscript

Salutari,

Am si eu o problema cu un shell script. Cand aleg optiunea din meniu si fac apelare la functie, in cadrul functiei nu mi se realizeaza sortarea, ci doar imi afiseaza mesajul... Shell-ul este facut online.

Cod:

#!/bin/bash

declare V=($*)

crescator()
{
        for (( i = 0; i < $#; i++ ))
        do
                for (( j = $i; j < $#; j++ ))
                 do
                        if [ ${V[$i]} -gt ${V[$j]}  ]; then
                                AUX=${V[$i]}
                                V[$i]=${V[$j]}
                                V[$j]=$AUX
                        fi
                done
        done

        echo -e "\n NUMERELE IN ORDINE CRESCATOARE:\c"
        for (( i=0; i < $#; i++ ))
        do
                echo -e "${V[$i]}\c"
        done
}

descrescator()
{
        for (( i = 0; i < $#; i++ ))
        do
                for (( j = $i; j < $#; j++ ))
                do
                        if [ ${V[$i]} -lt ${V[$j]}  ]; then
                                AUX=${V[$i]}
                                V[$i]=${V[$j]}
                                V[$j]=$AUX
                        fi
                done
        done
       echo -e "\n NUMERELE IN ORDINE DESCRESCATOARE:\c"
        for (( i=0; i < $#; i++ ))
        do
                echo -e "${V[$i]}\c"
        done
}

echo -e "NUMERELE INTRODUSE SUNT: \c"
for (( i = 0; i < $#; i++ ))
do
        echo -e "${V[$i]} \c"
done
echo -e "\n\n"

echo -e "Alegeti o optiune din meniu:\n"
echo "1. Crescator"
echo "2. Descrescator"
echo "0. Iesire"
echo -e "\n\n"
read KEY
case $KEY in
        1)
            crescator
        ;;
        2)
            descrescator
        ;;
        3)
             exit 1
        ;;
        *)
            exit 1
        ;;
esac

Offline

 

#2 26 May 2016 12:00:41

Alexandru.Cucu
Administrator
Locaţie: -21.8021247, -154.6975949
Înregistrat: 17 Jun 2008
Mesaje: 6668
Site web

Re: Problema Shellscript

$# este zero in functia ta pentru ca functia nu are niciun argument smile

Am folosit o variabila ARGNUM pentru pastrarea valorii.

Cod:

#!/bin/bash

declare V=($*)
ARGNUM=$#

crescator()
{
        for (( i = 0; i < $ARGNUM; i++ ))
        do
                for (( j = $i; j < $ARGNUM; j++ ))
                 do
                        if [ ${V[$i]} -gt ${V[$j]}  ]; then
                                AUX=${V[$i]}
                                V[$i]=${V[$j]}
                                V[$j]=$AUX
                        fi
                done
        done

        echo -e "\n NUMERELE IN ORDINE CRESCATOARE:\c"
        for (( i=0; i < $ARGNUM; i++ ))
        do
                echo -e "${V[$i]}\c"
        done
}

descrescator()
{
        for (( i = 0; i < $ARGNUM; i++ ))
        do
                for (( j = $i; j < $ARGNUM; j++ ))
                do
                        if [ ${V[$i]} -lt ${V[$j]}  ]; then
                                AUX=${V[$i]}
                                V[$i]=${V[$j]}
                                V[$j]=$AUX
                        fi
                done
        done
       echo -e "\n NUMERELE IN ORDINE DESCRESCATOARE:\c"
        for (( i=0; i < $ARGNUM; i++ ))
        do
                echo -e "${V[$i]}\c"
        done
}

echo -e "NUMERELE INTRODUSE SUNT: \c"
for (( i = 0; i < $ARGNUM; i++ ))
do
        echo -e "${V[$i]} \c"
done
echo -e "\n\n"

echo -e "Alegeti o optiune din meniu:\n"
echo "1. Crescator"
echo "2. Descrescator"
echo "0. Iesire"
echo -e "\n\n"
read KEY
case $KEY in
        1)
            crescator
        ;;
        2)
            descrescator
        ;;
        3)
             exit 1
        ;;
        *)
            exit 1
        ;;
esac

Offline

 

#3 26 May 2016 17:58:31

V3n3RiX
Membru
Locaţie: Birmingham UK
Înregistrat: 03 Sep 2011
Mesaje: 1019
Site web

Re: Problema Shellscript

Sau mai simplu :

Cod:

declare V="${@:1}"

Editat ultima oară de V3n3RiX (26 May 2016 17:59:14)


Distribution : Kogaion Linux 3 amd64
Desktop Environment : Xfce 4.12
System Information : Dual Quad Core Intel Xeon E5430 @ 2.66GHz + 24 GB Buffered Quad Channel ECC RAM
Blog : http://venerix.rogentos.ro

Offline

 

#4 26 May 2016 18:21:11

Unhask
Membru nou
Înregistrat: 26 May 2016
Mesaje: 2

Re: Problema Shellscript

Multumesc amandurora pentru raspuns!

Alexandru, varianta ta merge perfect. smile

Offline

 
Feed

Antet forum

Powered by FluxBB