Я хочу написать функцию bash function локально (в MacOS), поэтому, когда я запускаю эту функцию, первая команда - подключиться к удаленному рабочему столу ubuntu через ssh .

В двух словах:

    my_func () {
    ssh blah blah blah;
    echo $VARIABLE;
}

Желаемый вывод - это как /home/ubuntu/path/to/directory , но я ничего не получаю. Поэтому у меня сложилось впечатление, что my_func работает только локально.

PS Переменная среды $VARIABLE установлена в ~/.bashrc на удаленном рабочем столе.

1 ответ1

0

Если я правильно понимаю, это должно работать:

my_func () {
    ssh user@ip echo '$VARIABLE'
}

или если у вас есть больше команд, вы можете сделать:

my_func () {
    ssh user@ip <<'EOF'
    echo $VARIABLE
    command2
    command3
EOF
}

Вы также можете (мой любимый инструмент для выполнения большого количества команд) поместить ваши команды в другой файл и сделать это:

my_func () {
    SOURCE_FILE='/path/to/file'
    cat "$SOURCE_FILE" | ssh user@ip
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .