rupert wrote:
> On Mon, Mar 3, 2008 at 8:04 PM, Alessandro Vesely <[EMAIL PROTECTED]> wrote:
>> rupert wrote:
>> > ISDIR=0
>> > # Let's check if /home/vmail/domain.tld/username exists
>> > `if [ -d "$VHOME/$USERDOMAIN/$ACCOUNT" ];then ISDIR="1"; fi`
>>
>> Setting a variable in a child process has no effect. Try
>>
>> `test -d "$VHOME/$USERDOMAIN/$ACCOUNT"`
>> if (!$RETURNCODE)
>> {
>> ISDIR="1";
>> }
>
> Yesterday I did some tests, and it looks like no matter if the if
> condition is zero or one,
> it always executes the commandos inside the condition:
> Look at the line "/etc/maildroprc(20): Evaluating IF condition." on
> each section:
>
>
> /etc/maildroprc(12): ISDIR="0"
> maildrop: Filtering through `if [ -d "$VHOME/$USERDOMAIN/$ACCOUNT"
> ];then ISDIR="1"; fi`
That filtering instruction launches a shell process. The shell
presumably uses its internal version of /bin/test in order to
determine if the directory exist. In case it exists, the shell
subprocess will set an environment variable. The coincidental fact
that a variable in the subprocess bears the same name as one used in
the parent process is not relevant at all: after the subprocess
terminates, the environment it used, recycled, wasted, destroyed,
removed, forgotten.
In order to get results from a subprocess one can
* check its return code,
* retrieve its output,
* use IPC while both processes are still running.
(Other OSes may have different arrangements than *nix)
> /etc/maildroprc(20): Evaluating IF condition.
> /etc/maildroprc(20): Operation on: 0 and 1 - not equal, result is 1
> /etc/maildroprc(20): IF evaluated, result=1
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users