LINUX.ORG.RU

bash нуб

 ,


0

1
#!/bin/bash
set +e

str="123"

function foo1()
{
    VAR1=500
    if (($VAR1 < 100)); then
        VAR1=100
    else
        VAR1=$(($VAR1/2))
    fi
    return $VAR1
}

if [ -z str ]; then
    VAR2=100
else
    VAR2=$(foo1 $str)
fi

echo "$VAR2"
# ... somethin else used VAR2

можете смело закидывать помидорами, но реально не могу понять почему VAR2 теряется. Как поправить чтобы VAR2 инициализировался 250 и можно было использовать?

s/return $VAR1/print $VAR1/, в таком виде, как выше, присваивается вывод; если нужно проверить численное значение, возвращенное через return, используется $?.

dsdqmhsx
()

VAR1=500

Наверно хотели VAR1=$1 ?

return $VAR1

К сожалению, это можно только для значений из 0-255

[ -z str ]

Это всегда false, поменяйте на [[ -z $str ]]

VAR2=$(foo1 $str)

Это одначает, что вы получаете значение из вывода функции foo1, но ваша foo1 ничего не выводит. Значение return устанавливается в переменной $?

vodz ★★★★★
()