Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: aliases not getting expanded inside functions?



Bart Schaefer (schaefer@xxxxxxxxxxxxxxxx) wrote on 13 January 2003 18:48:
 >On Jan 13,  3:59pm, Carlos Carvalho wrote:
 >}
 >}  >      fields=( "${(@s:;:)dataline}" )	# Answers your other question
 >} 
 >} Doesn't work for me:
 >
 >Hrm.  I was sure I'd tried it, but on your input I get the same result
 >you do.  Well, there's always:
 >
 >    IFS=';' eval 'fields=( $=dataline )'

Good, and it also works without the eval:

     IFS=';' fields=( $=dataline )

did it for me.

 >However, it occurs to me that with dataline='...;";";...' -- that is, a
 >quoted semicolon in the input data -- there's no quick solution that's
 >going to do exactly what you need.

Yes, I know. The only way to deal with this is to parse the line
character by character. I'm taking the risk.

 >So don't name the array "fields", name it "f" or some such.  Three extra
 >characters (e.g. $f[capital] instead of $capital) for a whole lot less
 >complexity elsewhere.  And quote removal may be as easy as:
 >
 >	f=( ${${(kv)f#\"}%\"} )
 >
 >(Whether it's actually that easy depends on your input data, e.g., you
 >might also need to convert \" to ", but I think `read' will have done
 >that for you already.)

Quite persuasive :-) (I hope this is still English)



Messages sorted by: Reverse Date, Date, Thread, Author