help with sh script

FreeBSD questions mailing list FreeBSD at amadeus.demon.nl
Sun Jul 3 17:27:48 GMT 2005


On 03 jul 2005, at 19:03, fbsd_user wrote:

> On Sun, 3 Jul 2005 12:14:05 -0400
> "fbsd_user" <fbsd_user at a1poweruser.com> wrote:
>
>
>>> Thanks but I need a little more help.
>>>
>>> num_ip="(printf $raw_ip | sed 's/\.//g')"
>>>
>>> gives me a error.
>>>
>>> What would the correct syntax be?
>>>
>>> I am trying to write script to insert rules into PF firewall
>>> on 5.4. using pf anchors.
>>>
>>>
>>
>> Hello,
>>
>> The problem here is that
>>
>> num_ip="(printf $raw_ip | sed 's/\.//g')"
>>
>> makes num_ip equal to
>>
>> (printf $raw_ip | sed 's/\.//g')
>>
>> instead of its output.
>>
>> To assign the output of a command use "`":
>>
>> num_ip=`(printf $raw_ip | sed 's/\.//g')`
>>
>> Also the subshell (the "()") is not needed:
>>
>> num_ip=`printf $raw_ip | sed 's/\.//g'`
>>
>> Hope that helps.
>>
>> Best Regards,
>> Ale
>>
>
>
> Thanks that was just what I needed. Now building on that I tried
> this
>
> std_text='No ALTQ support in kernel ALTQ related functions disabled'
>
> ret_ob=`(echo $outrule) | pfctl -a doorman_ob:$session_name_ob -f -
> 2>&1`
> ret_ob=`printf $ret_ob | sed 's/\$std_text//g'`
>
> The goal here is to remove the std_text from the output of the
> pftctl command.
>
> I get this error "printf missing format character"
>
> Does sed need different syntax or have I got it all wrong?
>

printf needs " surrounding the arguments:

printf "$ret_ob"

is the right syntax...

Arno


More information about the freebsd-questions mailing list