Date: Sat, 08 Sep 2007 20:26:47 -0700 From: Garrett Cooper <youshi10@u.washington.edu> To: Giorgos Keramidas <keramida@ceid.upatras.gr> Cc: Grant Peel <gpeel@thenetnow.com>, freebsd-questions@FreeBSD.ORG Subject: Re: csh if..then delhema. Message-ID: <46E367F7.6060705@u.washington.edu> In-Reply-To: <20070909020657.GA4912@kobe.laptop> References: <000801c7f274$6fae71e0$6501a8c0@GRANT> <20070909020657.GA4912@kobe.laptop>
next in thread | previous in thread | raw e-mail | index | archive | help
Giorgos Keramidas wrote: > 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 > Or if you want to stick with Unix scripting... #!/bin/sh case "$filesystem" in '/') fsname=$fsnm1;; '/var') fsname=$fsnm2;; '/usr') fsname=$fsnm3;; '/home') fsname=$fsnm4;; *) echo "Oops.. that fs is unknown"; exit 1 ;; esac There ya go. The single quotes are optional in the case statement, but bourne compatible shells are semi-regex intelligent, so to avoid to any problems, I single-quoted the strings. tcsh can burn in hell for all I care. It's a horrible shell IMNHO (in my not-so humble opinion). Now if I could only convince the rest of the EE community to agree, that'd be nice. Trolls welcome :). -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46E367F7.6060705>