Walt Mankowski via plug on 26 Apr 2023 19:11:36 -0700


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

Re: [PLUG] Splitting strings in bash


On Wed, Apr 26, 2023 at 04:50:13PM -0400, Martin Cracauer via plug wrote:
> Walt Mankowski via plug wrote on Wed, Apr 26, 2023 at 03:46:08PM -0400: 
> > 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 is a bash-ism, not Posix shell.
> 
> If you don't need the commandline args anymore, or good way to split a
> variable portably is
> 
> set -- $STR
> one=$1
> two=$2
> ...
> 
> You can also use shift to iterate through the parts.
> 
> 
> If you want to split for one-by-one processing you use
> for var in $STR ; do echo $VAR ; done
> 
> 
> You can also use single-use word splitting:
> one=${STR% *}
> two=${STR#* }

Thanks, but the <<< syntax is exactly what I was looking for.

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