无法将 SSH 版本号分配给 bash 中的变量。运行下面的代码,“uname -a”的输出被分配给变量“os”,但是“ssh -v”的输出出现在终端窗口中,但没有分配给变量“ssh_v”。
已确认这种情况发生在各种版本的 Solaris 和 Ubuntu 上,但我不知道为什么。
代码:
#!/usr/bin/env bash
ssh_v=$(ssh -V)
printf "ssh_version = $ssh_v\n"
os=$(uname -a)
printf "OS_version = $os\n"
输出:
root@myserver:/usr/build/run# ./test.sh
Sun_SSH_2.4, SSH protocols 1.5/2.0, OpenSSL 0x100020bf
ssh_version =
OS_version = SunOS myserver 5.11 11.3 sun4v sparc sun4v
答案1
看起来 SSH 在 stderr 中打印版本,而不是在 stdout 中。所以你需要将 stderr 重定向到 stdout:
ssh_v=$(ssh -V 2>&1)