[asterisk-users] Logical AND
Stefan Schmidt
sst at sil.at
Sun May 25 06:33:35 CDT 2008
Adrian Marsh schrieb:
> Hi All,
>
> I'm trying to figure out why in the below code, the PSTN_NUM variable is
> always amended
>
> exten => s,n,NoOp(${PSTN_NUM})
> exten => s,n,ExecIf( $[ "${PSTN_NUM:0:1}" != "0" ] & $[
> ${LEN(${PSTN_NUM})} = 10 ]|Set|PSTN_NUM=001${PSTN_NUM})
> exten => s,n,NoOp(${PSTN_NUM})
>
> -- Executing [s at macro-setpstncli:8] NoOp("SIP/427-b7d0f518",
> "0123456789") in new stack
> -- Executing [s at macro-setpstncli:9] ExecIf("SIP/427-b7d0f518", " 0 &
> 1|Set|PSTN_NUM=0010123456789") in new stack
> -- Executing [s at macro-setpstncli:10] NoOp("SIP/427-b7d0f518",
> "0010123456789") in new stack
>
> It should evaluate PSTN_NUM and add a 001 only if: PSTN_NUM is 10 digits
> long and doesn't start with a 0.
>
> However, from the debug it's being changed, even though the first test
> operator logically is 0. If seems as though the "&" isnt being applied.
>
> Any ideas?
>
> Thanks
>
> Adrian
hello,
you should try this:
exten => s,n,ExecIf($[ $[ "${PSTN_NUM:0:1}" != "0" ] & $[
${LEN(${PSTN_NUM})} = 10 ]]|Set|PSTN_NUM=001${PSTN_NUM})
cause the AND Operator is another thing to work, so the result at your
way look like this ExecIf(1&1 | ...) and with my way it looks like this
ExecIf($[1&1]|...) which is the right syntax for it.
best regards
steve smith
More information about the asterisk-users
mailing list