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

Re: Problem with arrays -- "unknown file attribute"



On Mon, Jan 05, 2009 at 03:27:24AM -0500, Benjamin R. Haskell wrote:
> On Mon, 5 Jan 2009, Webb Sprague wrote:
>
>> Hi zsh list again,
>>
>> I have a problem converting a whitespace string to an array.  See XXX in 
>> code below (which takes the list of tables generated by sqlite and tries 
>> to parse and iterate over them).  Everything I try to go from text to 
>> array either doesn't convert to an array or gives some funky error. Please 
>> help, before I revert to my old bash ways !!
>>
>> pop-colnames () {
>>    IFS=
>>    setopt errreturn
>>    TABS=( $(sqlite3 $DB .tables) ) # XXX
>
> The following should work:
>
> ...
> TABS=( ${=$(sqlite3 $DB .tables)} )
> for TAB in $TABS ; do
> ...
>
> ${=...} turns on SH_WORD_SPLIT. And, I think the parentheses around $TABS 
> was the cause of the odd error message.
[...]

word splitting is only on for command substitution, it only for
parameter expansion that you need = to enable it.

Here, you want:

IFS=$'\n'
TABS=($(sqlite3 $DB .tables))

or

TABS=(${(f)"$(sqlite3 $DB .tables)"})

-- 
Stéphane



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