Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Sep 2007 05:06:57 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Grant Peel <gpeel@thenetnow.com>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: csh if..then delhema.
Message-ID:  <20070909020657.GA4912@kobe.laptop>
In-Reply-To: <000801c7f274$6fae71e0$6501a8c0@GRANT>
References:  <000801c7f274$6fae71e0$6501a8c0@GRANT>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2007-09-08 20:00, Grant Peel <gpeel@thenetnow.com> wrote:
> Hi all,
>
> I have tried every escape sequence I can think of, and I still get
> Division by 0 error here..
>
>  if ($filesystem == "\/") then
>                         $fsname = $fsnm1
>                 elseif ($filesystem == '/var') then
>                         $fsname =$fsnm2
>                 elseif ($filesystem == '/usr') then
>                         $fsname = $fsnm3
>                 elseif ($filesystem == '/home') then
>                         $fsname = $fsnm4
>                 else
>                         $fsname = 'GREATERTHAN4
>
> Any ideas how to excape the forward slashes in the if statemnt?

Use a better scripting language?

Seriously now, unless you are willing to experiment with csh until you
get its 'weird' escaping rules to work, you should consider using
something with a more predictable way of escaping string literals.

For example, there is nothing above which cannot be done a lot more
easily with Perl and a hash table:

    %fsmap = (
      '/'     => $fsnm1,
      '/var'  => $fsnm2,
      '/usr'  => $fsnm3,
      '/home' => $fsnm4,
    );

    $fsname = $fsmap{$filesystem} or 'unknown';

Using the hash results in much 'cleaner' code too.

Now, go forth and convert a csh script to Perl, Python, or something
with a cleaner syntax :)

- Giorgos




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070909020657.GA4912>