передача параметров и возвращаемых значений в оболочке - PullRequest
0 голосов
/ 16 ноября 2018

Я написал функцию с именем 'connectTo', которая принимает параметры с именем 'options', и она должна возвращать некоторую строку, повторяя перед возвратом.

 connectTo ${options}

это работает, т.е. в этом случае передаются аргументы, но когда янапишите

str=$(connectTo ${options})

тогда connectTo работает так, как если бы не было передано никаких аргументов> Я новичок в сценариях оболочки и, очевидно, что-то делаю не так, но что?(помните, мне нужна строка, возвращаемая функцией fuction, которая не может быть глобальной переменной)

function connectTo(){
    local flag=false
    local str=""
    for i in $@; do
            if [ "$flag" = true ]; then
                    str=$i
                    flag=false
            elif [[ "$i" = "--foo" || "$i" = "-f" ]]; then
                    flag=true
            fi
            echo "$i"
    done;
    if [ "$str" = "" ]; then
            echo ""
            return 0
    fi
    echo "found"
    return 0
}

В случае connectTo ${options} аргументы выводятся на печать, тогда как во втором случае они не

1 Ответ

0 голосов
/ 16 ноября 2018

Вы не должны использовать знак '$' при назначении переменной. так и должно быть str = connectTo [value_of_argument]

$ используется для доступа к значению переменной.

...