A partir da sua descrição do que você está tentando alcançar, o seguinte pode ser um script que faz isso:
#!/bin/bash
server="${1,,}"
jumphost="$( awk -vs="$server" '$0 ~ s { print $1; exit }' "/home/Lists/srv" )"
if [[ -z "$jumphost" ]] || [[ "$jumphost" == "$server" ]]; then
ssh -qt "$server" "$2"
else
ssh -qt "$jumphost" "ssh -qt \"$server\" \"$2\""
fi
A expansão do parâmetro ${1,,} diminuirá o valor de $1 . Para versões mais antigas de bash , use o seguinte:
server="$( printf '%s' "$1" | tr 'A-Z' 'a-z' )"
A variável jumphost será definida para o que estiver na primeira coluna da primeira linha no arquivo /home/Lists/srv correspondente ao nome do servidor. Observe que isso só seleciona a correspondência primeiro no arquivo e que a correspondência está levando em consideração a linha todo .
Se a correspondência deve ser somente contra a segunda coluna, altere $0 para $2 no script Awk.
Se $jumphost estiver vazio, ou se for o mesmo que $server , então o primeiro ramo será escolhido, caso contrário, o segundo.
Uma explicação do script Awk foi solicitada:
jumphost="$( awk -vs="$server" '$0 ~ s { print $1; exit }'
Com -v one define uma variável Awk para um valor específico. No comando acima, configuramos a variável Awk s para o valor de $server . Esta variável está então disponível no script Awk.
No script Awk,
$0 ~ s { print $1; exit }
o código dentro de { ... } será executado sempre que a condição $0 ~ s for verdadeira. A condição $0 ~ s significa " $0 matches (a expressão regular) s ". A variável s é a que fornecemos o valor de $server antes e $0 é o conteúdo do registro atual (linha) que o Awk acabou de ler. Então, em suma, isso encontra uma linha no arquivo que contém o nome do servidor.
Para forçar uma correspondência exata na segunda coluna (por exemplo), pode-se usar $2 == s como condição.
O código em { ... } imprimirá $1 , que é o primeiro campo (coluna) de $0 (a linha), antes de sair do script. Eu estou escolhendo sair para que não acabemos combinando mais do que uma única linha. Se o usuário especificar um valor muito vago para $server , corremos o risco de combinar várias linhas de outra forma.
Por fim, o valor gerado pelo Awk será atribuído à variável do shell jumphost a $( ... ) , que é aproximadamente igual a '...' .