On Thursday 10 August 2006 20:12, Dylan wrote:
Hi All,
I have the following script fragment:
tags=( $( vorbiscomment "$1") ) for tag in $(seq 0 $((${#tags[@]} - 1))) do echo ${tags[$tag]} done
which should extract the comments from the filename in $1 into the array $tags. So far so good. Unfortunately I find that the input is split up at spaces and line breaks, meaning that multi-word tags get distributed across more than one array element. Is there a way to get the assignment statement to break the vorbiscomment at line breaks only, or do I need to write a routine to put the broken lines back together?
A bit late, but who knows, this might be usefull: leen@ws-03:~> a=( `echo -e 'a a\nb b'` ); declare -p a declare -a a='([0]="a" [1]="a" [2]="b" [3]="b")' That was (sort of) what you had. My solution: leen@ws-03:~> eval a=( `echo -e 'a a\nb b' | sed 's#^#"#; s#$#"#'` ); declare -p a declare -a a='([0]="a a" [1]="b b")' You would probably do: eval tags=( $( vorbiscomment "$1" | sed 's#^#"#; s#$#"#' ) ) Cheers, Leen