Intereting Posts
Как найти файлы, которые в последний раз были изменены в каталоге и его подкаталогах? Сортировка по последнему символу ввода, затем по предыдущему номеру? Может ли сборщик отправлять данные, помеченные как хост, отличный от самого себя? как распаковывать / распаковывать сегментированные zip-файлы? Могу ли я установить ящик Debian для использования серверов имен OpenDNS, если он использует DHCP? Изменение числового значения в файле с помощью Vim из сценария Как завершить графический интерфейс в SunOS из shell-script Действительно ли `dd` действительно необходимо клонировать диск? домен lynx показывает ошибку 404 при запуске из localhost Сравнение и расширение брекетов Почему некоторые операции обработки событий в операционной системе записываются в asm вместо c? Почему служба FreeRADIUS не будет работать в Centos? Почему значение VSIZE в верхней части отличается от значения VSZ (размер виртуального набора) в ps? /etc/rc.d vs /etc/init.d Я хочу, чтобы поведение тачпада на Apple Magic Mouse на Linux

Контрольный список с использованием whiptail – Почему я не могу запускать несколько команд?

Этот код будет работать только для первого соответствия из-за строк под функциями: service httpd start, но он отобразит эхо от всех функций, если я удалю все строки ssh …. Может кто-нибудь объяснить это мне, что происходит и может быть какое-то решение, как я могу его использовать.

#!/bin/bash function s1 { echo "running 1 " ssh user@server_1_IP service httpd start } function s2 { echo "running 2" ssh user@server_2_IP service httpd start } function s3 { echo "running 3" ssh user@server_3_IP service httpd start } whiptail --title "Test" --checklist --separate-output "Choose:" 20 78 15 \ "Server1" "" on \ "Server2" "" on \ "Server3" "" on 2>results while read choice do case $choice in Server1) s1 ;; Server2) s2 ;; Server3) s3 ;; *) ;; esac done < results 

В вашем коде stdin который исходит из results файла, предоставляется как для while read ... и для sshs1 , s2 и s3 ). ssh будет есть все, что не читалось, read в первом цикле.

Попробуйте сохранить stdin перед циклом для последующего использования с ssh:

 exec {stdin}<&0 while read choice do case $choice in Server1) s1 <&$stdin ;; Server2) s2 <&$stdin ;; Server3) s3 <&$stdin ;; esac done < results 

Или используйте < /dev/null если вам не нужен stdin в ssh .