SH a funkcie

Miroslav Lachman 000.fbsd at quip.cz
Tue Feb 26 16:52:18 CET 2019


Peter Rosa wrote on 2019/02/26 16:36:
> Zdravim vsetkych,
> 
> este raz sa ospravedlnujem za predchadzajuci email, uz som zufal par 
> tyzdnov. Len vcera som doriesil reverzne DNS, tak som to musel odskusat...
> 
> Ale k mojej otazke - pochopil som spravne predavanie parametrov funkciam?
> 
> Mam funkciu, ktora nacita aktualnu sietovu masku a vypise ju v 
> citatelnom formate:
> 
> #!/bin/sh
> get_mask() {
>    iface=$1
>    hm=`ifconfig $iface | grep 'inet' | cut -d' ' -f4`
>    hm=${hm:2:10}
>    hex2cidr `echo $hm`
> }
> hex2cidr() {
>    hex=$1
>    h1=${hex%????}
>    h2=${hex#????}
>    printf "%d.%d.%d.%d\n" 0x${h1%??} 0x${h1#??} 0x${h2%??} 0x${h2#??}
> }
> 
> Funkciu volam v skripte takto:
> iif='em1'
> get_ip `echo $iif`
> 
> Naozaj sa funkcie volaju takto - cez subshell...? Nic lepsie som 
> nevymyslel a Gogol tiez nie je velmi napomocny.

Trosku me mate, ze definujes funkci get_mask a volas funkci get_ip, 
kterou tam nevidim :)

Tohle je podle me zbytecny:
    get_ip `echo $iif`


Tenhle priklad ti to snad vysvetli:

 > cat test.sh
#!/bin/sh

myprint() {
         date "+%F %T: $1"
}

myprint "prvni"

var="druha"

myprint $var



 > sh test.sh
2019-02-26 16:49:30: prvni
2019-02-26 16:49:30: druha

Zkratka za jmeno funkce uvedes promennou, nebo textovy retezec a funkce 
ho vezme jako pozicni parametr. Echo a backtick operator je tam zbytecny.

Mirek


More information about the Users-l mailing list