Multiple Variable Ranges with Bash Extension

I have a question about code extension in this question . Can you multiply two ranges of variables in Bash using parenthesis extension (not seq ) and not use loops?

This is what I have tried so far

Determine how ranges of variable boundaries work (finally, a good use of eval ):

 $ echo {1..10} 1 2 3 4 5 6 7 8 9 10 $ boundary=10 $ echo {1..$boundary} {1..10} $ eval echo {1..$boundary} 1 2 3 4 5 6 7 8 9 10 

But how can you multiply two ranges of variable boundaries?

 $ echo $(({1..10}*{1..10})) 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 $ boundary=10 $ echo $(({1..$boundary}*{1..$boundary})) bash: {1..10}*{1..10}: syntax error: operand expected (error token is "{1..10}*{1..10}") $ eval echo $(({1..$boundary}*{1..$boundary})) bash: {1..10}*{1..10}: syntax error: operand expected (error token is "{1..10}*{1..10}") 
+1
source share
1 answer

it seems to work, just avoided $ and [] to delay their evaluation (so that they are echoed, then evaluated)

 eval echo \$\[{1..$boundary}*{1..$boundary}\] 

It is said that I now need to look for what $[] does; -)


The second answer, with not obsolete syntax $[] (but two evaluations)

eval eval echo "\$\(\("{1..$boundary}*{1..$boundary}"\)\)"

or

eval eval echo \\\$\\\(\\\({1..$boundary}*{1..$boundary}\\\)\\\)

+4
source

All Articles