Carlos M. Fernández via plug on 26 Apr 2023 12:58:02 -0700


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

Re: [PLUG] Splitting strings in bash


The first example with the pipe puts the read command in a subshell, and that environment gets wiped out after the line is executed, taking the updated variable values with it. The one with the here string doesn't, allowing the read to modify the environment in the script.


On Wed, Apr 26, 2023, 15:46 Walt Mankowski via plug <plug@lists.phillylinux.org> wrote:
Hi all,

I've got a question about splitting strings in a bash shell
script. Let's say I've got a string

STR='dog cat'

I'd like to split that on the space into two variables, foo and bar. I
tried this

echo $STR | read foo bar

but it doesn't work. On the following line foo and bar are back to
their original values. Then, after looking through the bash manpage
for an alternative, I tried this instead

read foo bar <<< $STR

That DID work!

So that solves my problem, but I'm still confused. Those two commands
seem to me like they should be identical. Why doesn't the first one work?

Walt
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug