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>