🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.unix.shell
Article #1409

Re: Csh: first character of an arg is '-'

#1409
From: Michael Meissner
Date: Sun, 07 Oct 1990 04:28
56 lines
2607 bytes
In article <JAK.90Oct6202505@bimini.cs.brown.edu> jak@cs.brown.edu
(Jak Kirman) writes:

| Context: SunOS 4.1, /bin/csh
| 
| I want to be able to test whether the first character of an argument to
| a csh-script is '-'.  The man page makes it sound like ~= should work
| for this, but I could make no sense of that portion of the man page, and
| was not able to find any case where the result of ~= was non-0 except
| the trivial case where the right-hand side contained no wildcards and
| was the same as the left...
| 
| I do *not* want to have to exec a program; I want this to be fast.

The standard trick that is used in the /bin/sh case is to use a case
(read switch for csh) statement.  For example:

	switch ($1)
	case -*:
		echo "$1 is an option."
		breaksw

	default:
		echo "$1 is not an option."
		breaksw
	endsw

| Please do not tell me to use sh -- I know it is better for scripts, but
| the syntax is rather arcane, and I don't have the time to learn it right
| now, although eventually I will probably have to.  If you are quite
| certain this is not possible in csh, but it is in sh, I would appreciate
| a quick example of sh usage.

/bin/sh is more arcane than csh?  Surely thou jestest......  Any
interpreter that requires spaces to be exactly right is a hack, and
not an integrated language.  Ok, ok, enough with the csh taunting.
Here is the way to do it with the one true shell (whoops :-):

	case "$1" in
		-*)	echo "$1 is an option.";;
		*)	echo "$1 is not an option.";;
	esac

| As an aside, is there any way to find the first character of a word in
| csh or sh?

If you don't mind enumerating the possibilities, the case/switch
example is one such approach.  In musty, ancient versions of /bin/sh
that don't have test built in (ie, Ultrix, true BSD 4.[23], etc.),
case is a faster way of testing for equality than test (aka, '[').

--
Michael Meissner	email: meissner@osf.org		phone: 617-621-8861
Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142

Do apple growers tell their kids money doesn't grow on bushes?
Technical Details
Message-ID: <MEISSNER.90Oct7002830@osf.osf.org>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!snorkelwacker!paperboy!meissner
References: <JAK.90Oct6202505@bimini.cs.brown.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!snorkelwacker!paperboy!meissner
From: meissner@osf.org (Michael Meissner)
Newsgroups: comp.unix.shell
Subject: Re: Csh: first character of an arg is '-'
Message-ID: <MEISSNER.90Oct7002830@osf.osf.org>
Date: 7 Oct 90 04:28:30 GMT
References: <JAK.90Oct6202505@bimini.cs.brown.edu>
Sender: news@OSF.ORG
Organization: Open Software Foundation
Lines: 56
In-reply-to: jak@cs.brown.edu's message of 7 Oct 90 00:25:05 GMT