On Thu, 7 Jul 2005, Ian Macdonald wrote:

On Thu 07 Jul 2005 at 20:07:33 -0400, you wrote:

On Thu, 7 Jul 2005, Ian Macdonald wrote:

Hello,
This doesn't seem right:
[EMAIL PROTECTED] bash_completion]$ foo=x
[EMAIL PROTECTED] bash_completion]$ foo=bar
[EMAIL PROTECTED] bash_completion]$ readonly foo
[EMAIL PROTECTED] bash_completion]$ foo=bar >/dev/null
bash: foo: readonly variable
[EMAIL PROTECTED] bash_completion]$ foo=bar 2>/dev/null
bash: foo: readonly variable
[EMAIL PROTECTED] bash_completion]$ foo=bar &>/dev/null
bash: foo: readonly variable

    What are you tring to redirect? There is no output from your
    command; it is only an assignment to a read-only variable (which is
    naturally going to fail).

I'm trying to redirect the error, because I have a read-only variable
that may have attempts made to redefine it. I want those to silently
fail.

   You could define a function:

assign()
{
   case $(declare -p $1 2>/dev/null) in
      declare\ -r*) ;;
      *) eval "$1=\$2" ;;
   esac
}

   ..and use it for your assignments;

$ assign foo bar
$ echo $foo
bar
$ assign foo "$foo and grill"
$ echo $foo
bar and grill
$ readonly foo
$ assign foo bar
$ echo $foo
bar and grill
$

--
    Chris F.A. Johnson                     <http://cfaj.freeshell.org>
    ==================================================================
    Shell Scripting Recipes: A Problem-Solution Approach, 2005, Apress
    <http://www.torfree.net/~chris/books/cfaj/ssr.html>


_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash

Reply via email to