Выполнить программу в текущей оболочке внутри сценария оболочки

Добавить опцию к jackd '--без звука'

jackaudio вики -jackd

1
31.05.2021, 19:55
1 ответ

Попробуйте изменить "$($choice)"на просто$choice(без кавычек )--, что должно преобразовать вывод awk в слова и создать команду ssh из текущего процесса


Похоже, проблема

if (ip || alias && alias != "*") {
    if (port == "") port = "22"
    print "ssh " username "@" ip " -i " id_file " -p " port
}

Что произойдет, если ipпусто, а aliasнет? Вы войдете в блок, но нигде не используете псевдоним. Вам может понадобиться

if (!ip) { ip = alias }
if (ip && ip != "*") {...

Это может работать как альтернативный способ структурирования функции. Не проверено:

remote_host_connect() {
    awk '...' $HOME/.ssh/config \
    | fzf \
    | sh </dev/tty >/dev/tty 2>&1
}

У меня это работает как отдельный скрипт:

#!/bin/bash
eval "$(
    awk -v RS= -F'[[:space:]]+' '{
        for (i=1; i<NF; i+=2)
            data[$i]=$(i+1)
        ip = (data["HostName"] ? data["HostName"] : data["Host"])
        if (ip && ip != "*")
            printf "ssh %s@%s %s %s\n",
                (data["User"] ? data["User"] : ENVIRON["LOGNAME"]),
                ip,
                (data["IdentityFile"] ? "-i " data["IdentityFile"] : ""),
                "-p " (data["Port"] ? data["Port"] : 22)
    }' ~/.ssh/config \
    | fzf
)"
1
28.07.2021, 11:27

Теги

Похожие вопросы