LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

local diag_menu=«»

Очищение в local — по умолчанию. А вообще, как-то странно Вы кодируете. Вот тоже самое на ash. Можете подумать, почему даже без башизмов тоже самое получается при желании короче и яснее.

#!/bin/ash

connect() {
  local user=$1 pass=$2 i=1 diag_menu
  while read ip; do
    local "ip_$i=$ip"
    diag_menu="$diag_menu $i $ip"
    i=$(($i+1))
  done < file_with_ips.txt
  answer="$(dialog --stdout --backtitle SSH --menu Servers: $(($i+7)) 40 $i $diag_menu)"
  if [ "$answer" ]; then
        eval i=\$ip_$answer
        sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -X "$user@$i"
  fi
}
connect USER PASSWORD
(Последний if — защита от «Cansel» в dalog)

Исходная версия vodz, :

local diag_menu=«»

Очищение в local — по умолчанию. А вообще, как-то странно Вы кодируете. Вот тоже самое на ash. Можете подумать, почему даже без башизмов тоже самое получается при желании короче и яснее.

#!/bin/ash

connect() {
  local user=$1 pass=$2 i=1 diag_menu
  while read ip; do
    local "ip_$i=$ip"
    diag_menu="$diag_menu $i $ip"
    i=$(($i+1))
  done < file_with_ips.txt
  answer="$(dialog --stdout --backtitle SSH --menu Servers: $(($i+7)) 40 $i $diag_menu)"
  if [ "$answer" ]; then
        eval i=\$ip_$answer
        sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -X "$user@$i"
  fi
}
connect USER PASSWORD