имеется скриптик вида:
01 n1=111.111.111.111/11
.
.
.
02 n99=999.999.999.999/9903 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"
можно ли такое сделать? или есть способ проще?
>имеется скриптик вида:
>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
>>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
скобки используются, для того, чтобы переменная не сливалась со строкой... но не вижу, как мне это здесь поможет :-(
>>>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/shcmd=`which ls`
cmd_flags="-l"
netfile="data"while read net
do
$cmd $cmd_flags $netfile
done < $netfileexit 0
[test@test shell]$ cat data
10.1.1.1
10.1.1.2
10.1.1.3P.S. nmap ne na6los. Postavil prosto ls, no v dannom slu4aje ne principialno.
>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
>имеется скриптик вида:
>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}}
n1='abcd'
varname=n1
echo ${!varname}
>n1='abcd'
>varname=n1
>echo ${!varname}
в какой оболочке это работает?
в /bin/sh не работает :-(
>>n1='abcd'
>>varname=n1
>>echo ${!varname}
>в какой оболочке это работает?
>в /bin/sh не работает :-(
/bin/bash