Date: Thu, 8 May 2014 14:48:22 -0400 From: Rick Miller <vmiller@hostileadmin.com> To: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Bourne variable unset outside while() Message-ID: <CAHzLAVFhyPtkWCj1uj0aq0AusfrWL55UUn-mkxiyzUus7x4vdA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi all, I have a Bourne shell script that echoes the contents of a data structure to a while() loop that iterates over the data and is expected to append a string from the current iteration to a different list. Inside the while(), it works fine, but echo'ing the list outside the loop produces empty output. I expect the variable to maintain it's final state after processing the while(), but it does not appear to be doing so. /** The script **/ #! /bin/sh -x fs="freebsd-ufs gprootfs 1G freebsd-swap gpswapfs 1G freebsd-ufs gpvarfs 1G"; echo "${fs}" | while read -r fstype fslabel fssize; do labels="${labels} ${fslabel}"; echo "${labels}"; done echo -e "\nlabels = ${labels}"; /** End the script **/ The output from this script is at http://pastebin.com/mxNLLWtm This almost appears to be an issue with scope, but I've not encountered this before, especially in such simple context. I must be missing something obvious and just looking for feedback to send me off in the right direction. -- Take care Rick Miller
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHzLAVFhyPtkWCj1uj0aq0AusfrWL55UUn-mkxiyzUus7x4vdA>