The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"рекурсия переменных в shell"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"рекурсия переменных в shell"
Сообщение от Krueger emailИскать по авторуВ закладки(ok) on 21-Июл-04, 21:53  (MSK)
имеется скриптик вида:
01  n1=111.111.111.111/11
  .
  .
  .
02  n99=999.999.999.999/99

03  counter=1

04  cmd="nmap -p 80 "
05    while [ ${counter} -lt 99 ]
06    do
07      num="n${counter}"
08      cmd="$cmd$num"
09      counter='expr $counter+1'
10    done
11  exit 0
а вот здесь не знаю что и делать дальше :-( есть переменная содержащая имя другой переменной, как сделать так, чтобы вытащить из этой переменной внутреннюю переменную?
то есть восьмая строчка выдаёт: "cmd=nmap -p 80 n1"
а хотелось бы чтобы оно выдавало "cmd=nmap -p 80 111.111.111.111/11"
можно ли такое сделать? или есть способ проще?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "рекурсия переменных в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 22-Июл-04, 09:41  (MSK)
>имеется скриптик вида:
>01  n1=111.111.111.111/11
>  .
>  .
>  .
>02  n99=999.999.999.999/99
>
>03  counter=1
>
>04  cmd="nmap -p 80 "
>05    while [ ${counter} -lt 99 ]
>06    do
>07      num="n${counter}"
>08      cmd="$cmd$num"
>09      counter='expr $counter+1'
>10    done
>11  exit 0
>а вот здесь не знаю что и делать дальше :-( есть переменная
>содержащая имя другой переменной, как сделать так, чтобы вытащить из этой
>переменной внутреннюю переменную?
>то есть восьмая строчка выдаёт: "cmd=nmap -p 80 n1"
>а хотелось бы чтобы оно выдавало "cmd=nmap -p 80 111.111.111.111/11"
>можно ли такое сделать? или есть способ проще?

A po4emu: cmd=nmap -p 80 n1 ?
cmd=nmap -p 80 $n1
cmd=nmap -p 80 ${n1}
Razli4ija man sh

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "рекурсия переменных в shell"
Сообщение от Krueger emailИскать по авторуВ закладки(ok) on 22-Июл-04, 18:31  (MSK)
>>08      cmd="$cmd$num"

>A po4emu: cmd=nmap -p 80 n1 ?
потому то цикл в котором перебирается список сетей
>cmd=nmap -p 80 $n1
>cmd=nmap -p 80 ${n1}
а n1 - это значение переменной num, и надо вытащить его и использовать как переменную. а как это сделать не могу выдумать :-(
>Razli4ija man sh
скобки используются, для того, чтобы переменная не сливалась со строкой... но не вижу, как мне это здесь поможет :-(


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "рекурсия переменных в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 23-Июл-04, 10:13  (MSK)
>>>08      cmd="$cmd$num"
>
>>A po4emu: cmd=nmap -p 80 n1 ?
>потому то цикл в котором перебирается список сетей
>>cmd=nmap -p 80 $n1
>>cmd=nmap -p 80 ${n1}
>а n1 - это значение переменной num, и надо вытащить его и
>использовать как переменную. а как это сделать не могу выдумать :-(
>
>>Razli4ija man sh
>скобки используются, для того, чтобы переменная не сливалась со строкой... но не
>вижу, как мне это здесь поможет :-(

Izvinajus. Nemnogo ne ponal zada4u izna4alno, poetomu i posovetoval glupost. Ja bi sdelal tak:
[test@test shell]$ cat shell.sh
#!/bin/sh

cmd=`which ls`
cmd_flags="-l"
netfile="data"

while read net
do
$cmd $cmd_flags $netfile
done < $netfile

exit 0

[test@test shell]$ cat data
10.1.1.1
10.1.1.2
10.1.1.3

P.S. nmap ne na6los. Postavil prosto ls, no v dannom slu4aje ne principialno.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "рекурсия переменных в shell"
Сообщение от Krueger emailИскать по авторуВ закладки(ok) on 24-Июл-04, 11:40  (MSK)
>sdelal tak:
>[test@test shell]$ cat shell.sh
>#!/bin/sh
>
>cmd=`which ls`
>cmd_flags="-l"
>netfile="data"
>
>while read net
>do
> $cmd $cmd_flags $netfile
>done < $netfile
>
>exit 0
спасибо за идею %-)
сделал вот так:
#!/bin/sh                
#set -x                  
net=$(cat data)      
nmap='nmap -p 80'        
                          
for IP in ${net} ; do
$nmap ${IP}              
done                      
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "рекурсия переменных в shell"
Сообщение от newser Искать по авторуВ закладки on 23-Июл-04, 13:35  (MSK)
>имеется скриптик вида:
>01  n1=111.111.111.111/11
>  .
>  .
>  .
>02  n99=999.999.999.999/99
>
>03  counter=1
>
>04  cmd="nmap -p 80 "
>05    while [ ${counter} -lt 99 ]
>06    do
>07      num="n${counter}"
>08      cmd="$cmd$num"
>09      counter='expr $counter+1'
>10    done
>11  exit 0
>а вот здесь не знаю что и делать дальше :-( есть переменная
>содержащая имя другой переменной, как сделать так, чтобы вытащить из этой
>переменной внутреннюю переменную?
>то есть восьмая строчка выдаёт: "cmd=nmap -p 80 n1"
>а хотелось бы чтобы оно выдавало "cmd=nmap -p 80 111.111.111.111/11"
>можно ли такое сделать? или есть способ проще?


Попробуй что-нибудь типа: ${${num}}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "рекурсия переменных в shell"
Сообщение от Jake Искать по авторуВ закладки on 04-Авг-04, 13:03  (MSK)
n1='abcd'
varname=n1
echo ${!varname}
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "рекурсия переменных в shell"
Сообщение от Krueger emailИскать по авторуВ закладки(ok) on 06-Авг-04, 22:27  (MSK)
>n1='abcd'
>varname=n1
>echo ${!varname}
в какой оболочке это работает?
в /bin/sh не работает :-(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "рекурсия переменных в shell"
Сообщение от Jake Искать по авторуВ закладки on 11-Авг-04, 13:10  (MSK)
>>n1='abcd'
>>varname=n1
>>echo ${!varname}
>в какой оболочке это работает?
>в /bin/sh не работает :-(
/bin/bash


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру