Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.user > #168776

Re: bash help please

From David Christensen <dpchrist@holgerdanske.com>
Newsgroups linux.debian.user
Subject Re: bash help please
Date 2016-06-10 06:10 +0200
Message-ID <rIlVD-887-1@gated-at.bofh.it> (permalink)
References <rIkGd-74R-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 06/09/2016 07:41 PM, Gene Heskett wrote:
> A bash script that has worked most of a decade now refuses.
>
> For instance, assume that var InMail is = "gene", and can be echoed from
> the command line using $InMail like this.
> gene@coyote:~$ echo $InMail
> gene
> But I'll be switched if I can get a result from a line of code resembling
> this from the command line while attempting to troubleshoot a 110 line
> bash script: which asks "if test [${InMail} = "gene"]
> 			  then
> 				-----
> 			 elif (another name)
> 				yadda yadda
>
> gene@coyote:~$ echo `test [${InMail} = "gene"]`
>
> All I get is the linefeed.  Obviously I'm losing it, so how do I
> translate and get usefull output for troubleshooting?


'test' and '[ ... ]' are very similar.  I use the latter.  I definitely 
don't use both in one line.


When comparing variables against string constants in '[ ... ]' 
expressions, I put quotes around the variables.


Here's a short script that seems to work correctly:

	2016-06-09 20:48:40 dpchrist@t7400 ~/sandbox/bash
	$ cat gene-heskett.sh
	#!/bin/bash
	export InMail="gene"
	echo "InMail=${InMail}"
	if [ "${InMail}" = "gene" ]
	then
	    echo "InMail is gene"
	elif [ "$InMail" = "david" ]
	then
	    echo "InMail is david"
	else
	    echo "InMail unknown"
	fi


Here's a run:

	2016-06-09 20:49:30 dpchrist@t7400 ~/sandbox/bash
	$ ./gene-heskett.sh
	InMail=gene
	InMail is gene


Here's a run with the '-x' option:

	2016-06-09 20:56:19 dpchrist@t7400 ~/sandbox/bash
	$ bash -x gene-heskett.sh
	+ export InMail=gene
	+ InMail=gene
	+ echo InMail=gene
	InMail=gene
	+ '[' gene = gene ']'
	+ echo 'InMail is gene'
	InMail is gene


If that doesn't help, post a complete script that demonstrates the problem.


David

Back to linux.debian.user | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

bash help please Gene Heskett <gheskett@shentel.net> - 2016-06-10 04:50 +0200
  Re: bash help please Lars Noodén <lars.nooden@gmail.com> - 2016-06-10 05:10 +0200
    Re: bash help please Gene Heskett <gheskett@shentel.net> - 2016-06-10 06:40 +0200
  Re: bash help please David Wright <deblis@lionunicorn.co.uk> - 2016-06-10 06:00 +0200
    Re: bash help please Gene Heskett <gheskett@shentel.net> - 2016-06-10 07:10 +0200
      Re: bash help please David Wright <deblis@lionunicorn.co.uk> - 2016-06-10 07:40 +0200
        Re: bash help please Gene Heskett <gheskett@shentel.net> - 2016-06-10 08:40 +0200
  Re: bash help please David Christensen <dpchrist@holgerdanske.com> - 2016-06-10 06:10 +0200
    Re: bash help please Gene Heskett <gheskett@shentel.net> - 2016-06-10 07:10 +0200
      Re: bash help please David Christensen <dpchrist@holgerdanske.com> - 2016-06-11 05:50 +0200
  Re: bash help please <tomas@tuxteam.de> - 2016-06-10 09:10 +0200

csiph-web