[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ksh's select, almost, in portable shell
From: |
Peter Seebach |
Subject: |
Re: ksh's select, almost, in portable shell |
Date: |
Wed, 17 Sep 2008 16:56:05 -0500 |
In message <address@hidden>, Ralf Wildenhues writes:
>> I enclose func_select below. Weaknesses:
>> 1. Newline after prompt. (Solving this portably seemed like too much work.)
>Grab the settings of ECHO_C, ECHO_N, ECHO_T from Autoconf, and use them.
ECHO_T? New on me.
I could probably do this, but wanted to keep this as small and self-contained
as I could.
>> func_select () {
>> func_select_args=0
>> if expr "$1" : "^[_a-zA-Z][_a-zA-Z0-9]*$" > /dev/null; then
>FWIW, expr expressions are always anchored, so there is no need for more
>anchoring (another instance below). But can't you avoid a fork here,
>like
> case $1 in
> [!_a-zA-Z]* | *[!_a-zA-Z0-9]*) usage "$1";;
> esac
Oooh, clever.
>'shift N' is not so portable.
I have been unable to find a living shell without it.
>Just drop the 1.
But yeah.
>> for func_select_arg
>> do
>> func_select_args=`expr $func_select_args + 1`
>> eval func_select_a_$func_select_args=\$func_select_arg
>> done
>This again forks a lot. I'd use a shell function to factor between
>$(()) and expr, so that only shells without the former use the latter
>and fork (Autotest and Libtool do this). Likewise below.
That's a thought.
>> if expr "$REPLY" : '^[1-9][0-9]*$' > /dev/null; then
>case $REPLY in
> 0* | *[!0-9]* ) bad ... ;;
>esac
Very clever.
I had not thought of the use of [!foo] as a replacement for a regex [foo]*.
... And I also didn't realize (though I should have) that spaces were allowed
in case patterns. I think I was thrown off by
case a in
x y) ;;
esac
But of course, spaces around | are probably sane. Neat!
-s
- ksh's select, almost, in portable shell, Peter Seebach, 2008/09/17
- Re: ksh's select, almost, in portable shell, Ralf Wildenhues, 2008/09/17
- Re: ksh's select, almost, in portable shell,
Peter Seebach <=
- Re: libraries of shell script functions, Bruno Haible, 2008/09/17
- Re: libraries of shell script functions, Karl Berry, 2008/09/18