乘变量范围使用bash括号扩展 [英] Multiply variable ranges with Bash brace expansion
问题描述
我已经在延长<一的code的一个问题href=\"http://stackoverflow.com/questions/5690102/how-can-i-make-a-multiplication-table-using-bash-brace-expansion-so-far-i-have-t\">this问题:你可以将两个变量的取值范围在使用bash括号扩展(而不是 SEQ
),而不是使用循环
这是我到目前为止已经试过
工作出界如何变量的工作范围(最后一个良好的使用评估
)
$ {回声} 1..10
1 2 3 4 5 6 7 8 9 10
$边界= 10
$回声{1 .. $边界}
{} 1..10
$ EVAL回声{1 .. $边界}
1 2 3 4 5 6 7 8 9 10
但你怎么能乘两个变量的边界范围?
$回声$(({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 10 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
$边界= 10
$回声$(({1 .. $边界} * {1 .. $边界}))
庆典:{1..10} * {} 1..10:语法错误:预期操作数(错误标记是{1..10} * {1..10})
$ EVAL回声$(({1 .. $边界} * {1 .. $边界}))
庆典:{1..10} * {} 1..10:语法错误:预期操作数(错误标记是{1..10} * {1..10})
这似乎工作,才躲过了 $
和 []
来推迟自己的评价(使他们回荡,然后评估)
EVAL回声\\ $ \\ [{1 .. $边界} * {1 .. $边界} \\]
这是说我现在需要去查找什么 $ []
做的事情; - )
第二个答案,与非德precated $ []
语法(但有两个evals)
EVAL EVAL回声\\ $ \\(\\({1 .. $边界} * {1 .. $边界}\\)\\)
或
EVAL EVAL回声\\\\\\ $ \\\\\\(\\\\\\({1 .. $边界} * {1 .. $边界} \\\\\\)\\\\\\)
I've a question extending the code in this question: Can you multiply two variable ranges in Bash using brace expansion (not seq
) and not using loops?
This is what I've tried so far
Work out how variable boundary ranges 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 variable boundary ranges?
$ 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}")
this seems to work, just escaped the $
and []
to delay their evaluation (so that they are echoed, then evaluated)
eval echo \$\[{1..$boundary}*{1..$boundary}\]
That said I now need to go lookup what $[]
does ;-)
Second answer, with non deprecated $[]
syntax (but two evals)
eval eval echo "\$\(\("{1..$boundary}*{1..$boundary}"\)\)"
or
eval eval echo \\\$\\\(\\\({1..$boundary}*{1..$boundary}\\\)\\\)
这篇关于乘变量范围使用bash括号扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!