>>or, of course, you could go the direct route:
>>
>>[[ -f /clamscan/servers/$target_system ]] && parm_1="valid"


Yea, that's probably what I'd do. Although I think his path actually
terminates with a directory since his comment said it was a list of
mountpoints. In which case he'd want:

[[ -d /clamscan/servers/$target_system ]] && parm_1="valid"


-Sam

-----Original Message-----
From: Linux on 390 Port [mailto:[EMAIL PROTECTED] On Behalf Of
Larry Ploetz
Sent: Thursday, September 06, 2007 5:58 PM
To: LINUX-390@VM.MARIST.EDU
Subject: http://www.marist.edu/htbin/wlvindex?LINUX-390

I posted three responses with the wrong email address:

========================================================================
============================
You could do something else entirely, like:

larry$ a=a
larry$ echo $list
a|b|c
larry$ [[ $list =~ $a ]] && echo hi || echo ho
hi
larry$ a=d
larry$ [[ $list =~ $a ]] && echo hi || echo ho
ho

or

[[ "$(ls /clamscan/servers)" =~ $target_system ]] && parm_1="valid"

(assuming no system name is a subset of another system name. Otherwise:

[[ "$(ls /clamscan/servers)" =~ "
$target_system
" ]] && parm_1="valid"

to ensure $target_system matches exactly and all of one file name in
/clamscan/servers, but the $target_system token has to be in the first
column.

or, of course, you could go the direct route:

[[ -f /clamscan/servers/$target_system ]] && parm_1="valid"

========================================================================
============================

Fargusson.Alan wrote:


> The problem is that bash takes cooked_list as a single token in the
> case statement.  It matches the entire list of systems, and not each
> member of the list.  I don't know of any way around this.  You will
> probably need to do another for loop on raw_list and check for a match
> in the loop.
>

This is where eval comes in handy:

larry$ bash -c 'set -x; list="a|b|c"; t=a; eval "case $t in ( $list )
echo one;; b ) echo two;;  esac'
+ list='a|b|c'
+ t=a
+ eval 'case a in ( a|b|c ) echo one;; b ) echo two;; esac'
++ case a in
++ echo one
one

(although James would still have the problem of one system name being a
subset of another system name.)


========================================================================
============================

Mark Post wrote:
>
> If that doesn't help, then put a "set -x" right after the #!/bin/sh
line, and send the output, along with the command invocation.
>
>

or put "-x" on the shebang line:

#! /bin/sh -x

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or
visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

Reply via email to