Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 May 2014 16:45:46 +0200
From:      Polytropon <freebsd@edvax.de>
To:        "Ivailo A. Tanusheff" <ITanusheff@postbank.bg>
Cc:        Rick Miller <vmiller@hostileadmin.com>, FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: Bourne variable unset outside while()
Message-ID:  <20140509164546.d10312ee.freebsd@edvax.de>
In-Reply-To: <1422065A4E115F409E22C1EC9EDAFBA456552E@sofdc01exc02.postbank.bg>
References:  <CAHzLAVFhyPtkWCj1uj0aq0AusfrWL55UUn-mkxiyzUus7x4vdA@mail.gmail.com> <1422065A4E115F409E22C1EC9EDAFBA456552E@sofdc01exc02.postbank.bg>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 9 May 2014 06:42:45 +0000, Ivailo A. Tanusheff wrote:
> Hi,
> 
> I think you can check out this:
> http://stackoverflow.com/questions/7482510/variable-incrementing-in-bash
> 
> So I sugest you do the same trick or use different approach - awk or something like this.

This actually works (and is a good idea to get rid of my suggested
`awk ...` call per each line of input). In "here documents", variable
expansion can be used. If the input will be coming from a file
instead, using < /the/file can be done.

	#!/bin/sh

	fs="freebsd-ufs gprootfs 1G
	freebsd-swap gpswapfs 1G
	freebsd-ufs gpvarfs 1G"

	while read -r fstype fslabel fssize; do
	        labels="${labels} ${fslabel}"
	done << EOF
	"${fs}"
	EOF

	echo "labels = ${labels}"

The result is:

	labels =  gprootfs gpswapfs gpvarfs

There's a leading space because at the first addition, ${labels}
is empty, a space and the 1st entry are then added. The awk approach
didn't have that "bug", erm... feature. ;-)



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140509164546.d10312ee.freebsd>