Estou escrevendo um script bash no Raspberry Pi OS (baseado no Debian 12 Bookworm). O script tenta fazer algo como
ssh "$args" "$user"@"$ip" 'command'
Pelo que li, esta é uma prática padrão. No entanto, descobri que quando $args
contém mais de um argumento, como
-v -i /path/to/keyfile -o StrictHostKeyChecking=yes
e então executando
ssh "$args" "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"'
ssh retorna o seguinte com um status de saída de 255
:
unknown option --
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command [argument ...]]
No entanto, executar o mesmo comando usando apenas o conteúdo de $args
em vez de usar $args
é bem-sucedido e sai com um status de 0
:
ssh -v -i /path/to/keyfile -o StrictHostKeyChecking=yes "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"'
Para reafirmar, using $args
funciona perfeitamente bem quando há apenas um único argumento, como
-o StrictHostKeyChecking=yes
O que está acontecendo aqui? O que posso fazer para evitar isso? Pelo unknown option --
que parece, algo está analisando $args
e retirando algumas coisas, porque só reclama disso quando há dois ou mais argumentos (duas incidências de -
in $args
)?