[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash help please



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


Reply to: