使用bash将2的回显值提升为{0….5}的幂

使用bash将2的回显值提升为{0….5}的幂,bash,Bash,我不熟悉bash脚本。现在,这个问题是不言自明的。我想在bash中使用loop打印值2^0、2^1、2^2、2^3、2^4、2^5 我试过 for i in {0...5}; do echo 2^$i; done 结果: 2^{0...5} 请建议一个解决方案Edit:更适合此目的,因为它更简短。 2^$i无法工作,因为bash不支持该操作符 你可以尝试添加这个 pow() { echo $(( ${1:?} ** ${2:?} )) } 到您的代码(使用它就像pow[base][

我不熟悉bash脚本。现在,这个问题是不言自明的。我想在bash中使用loop打印值2^0、2^1、2^2、2^3、2^4、2^5

我试过

for i in {0...5}; do echo 2^$i; done
结果:

2^{0...5}
请建议一个解决方案

Edit:更适合此目的,因为它更简短。
2^$i无法工作,因为bash不支持该操作符

你可以尝试添加这个

pow()
{
    echo $(( ${1:?} ** ${2:?} ))
}
到您的代码(使用它就像
pow[base][exponent]
(当然没有括号))

(请记住,我尚未测试此功能,因此可能无法按预期工作)

Edit:对于这个目的来说更好,因为它更短更简单。
2^$i无法工作,因为bash不支持该操作符

你可以尝试添加这个

pow()
{
    echo $(( ${1:?} ** ${2:?} ))
}
到您的代码(使用它就像
pow[base][exponent]
(当然没有括号))

(请记住,我尚未测试此功能,因此可能无法按预期工作)


这是正确的形式:

for i in {0..5}; do echo $((2**i)); done
其中,
{..}
是范围运算符,
$(())
是算术求值运算符


请注意,Bash中的power操作符是由
**
编写的,而不是
^

这是正确的形式:

for i in {0..5}; do echo $((2**i)); done
其中,
{..}
是范围运算符,
$(())
是算术求值运算符


请注意,Bash中的power操作符是编写的
**
而不是
^

您也可以尝试此代码

$ for i in {0..5}; do awk -v var=$i 'BEGIN{print 2^var}'; done
1
2
4
8
16
32

你也可以试试这个代码

$ for i in {0..5}; do awk -v var=$i 'BEGIN{print 2^var}'; done
1
2
4
8
16
32

你用了一个点太多了:只使用
{0..5}
。这就给出了2^0,2^1,2^2,2^3,2^4,2^5的字面意思。我想要它们的值。你用了一个点太多了:只使用
{0..5}
。这会得到2^0,2^1,2^2,2^3,2^4,2^5。我想要它们的值。当你混合使用bash和awk时,你可以只使用awk和
for(i=0;当你混合使用bash和awk时,你可以只使用awk和
for(i=0;it技术上
{0..5}
是一个大括号扩展表达式,
$(..)
是一个算术表达式;它们不是运算符。技术上
{0..5}
是大括号展开表达式,
$(..)
是算术表达式;它们不是运算符。