我正在 Raspberry Pi OS(基于 Debian 12 Bookworm)上编写 bash 脚本。该脚本尝试做类似的事情
ssh "$args" "$user"@"$ip" 'command'
据我所知,这是标准做法。然而我发现 when$args
包含多个参数,例如
-v -i /path/to/keyfile -o StrictHostKeyChecking=yes
然后执行
ssh "$args" "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"'
ssh 返回以下内容,退出状态为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 ...]]
$args
但是,仅使用 的内容而不是 using 执行相同的命令$args
会成功并以状态退出0
:
ssh -v -i /path/to/keyfile -o StrictHostKeyChecking=yes "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"'
重申一下,$args
当只有一个参数时, using 效果非常好,例如
-o StrictHostKeyChecking=yes
这里发生了什么?我可以做什么来防止这种情况发生?从unknown option --
看来,有些东西正在解析$args
并从中剥离一些东西,因为它只在有两个或多个参数时才会抱怨这一点(两次出现-
in $args
)?