【发布时间】:2016-04-20 22:38:34
【问题描述】:
我试图让我的生活更轻松,在 80 多台机器上部署一些东西。但是,并非所有这些机器都运行相同版本的 RHEL,并且需要在它们上运行的脚本存在细微差别。
这就是为什么我要先获取发布版本,然后选择要在机器上部署的文件。
问题是选择循环不会等待我的输入,它会完全跳过它并继续前进。
这是我正在使用的代码
#!/bin/bash
version() {
cat /etc/*-release | grep "release"
select ver in "6" "7"
do
case $ver in
6) echo "install for RH6"; break;;
7) echo "install for RH7"; break;;
esac
done
}
while read srv
do
ping -c 1 $srv
ssh -n $srv "$(typeset -f); version"
done < $1
ping 只是为了测试目的
这是一些示例输出:
root@192.168.xxx.xxx's password:
Red Hat Enterprise Linux Server release 7.1 (Maipo)
Red Hat Enterprise Linux Server release 7.1 (Maipo)
1) 6
2) 7
#?
【问题讨论】:
-
您在本地机器上运行的 shell 中定义您的函数。远程主机不会知道。
标签: bash loops select input ssh