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 04:39:18AM -0500, Benjamin R. Haskell wrote:
[...]
>>> ${=...} 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 

sorry, I actually meant "...is always on for..." as you probably
guessed.

[...]
>> TABS=(${(f)"$(sqlite3 $DB .tables)"})
>>
>
> The ${(f)"$(command stuff)"} idiom is especially useful in general. But, in 
> this case, neither of these works, since sqlite3 returns multiple tables 
> per line:
>
> $ TABS=($(sqlite3 ~mozprof/formhistory.sqlite .tables)) ; print -l $TABS
> moz_dummy_table  moz_formhistory
> $ TABS=(${(f)"$(sqlite3 ~mozprof/formhistory.sqlite .tables)"}) ; print -l 
> $TABS
> moz_dummy_table  moz_formhistory
> $ unset IFS
> $ TABS=($(sqlite3 ~mozprof/formhistory.sqlite .tables)) ; print -l $TABS
> moz_dummy_table
> moz_formhistory
[...]

Indeed.

I suppose you could do:

sqlite3 ~mozprof/formhistory.sqlite "SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1"

But that'd be overkill and probably not portable accross
versions of sqlite...

-- 
Stéphane



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