使用bash将2的回显值提升为{0….5}的幂
我不熟悉bash脚本。现在,这个问题是不言自明的。我想在bash中使用loop打印值2^0、2^1、2^2、2^3、2^4、2^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][
for i in {0...5}; do echo 2^$i; done
结果:
2^{0...5}
请建议一个解决方案Edit:更适合此目的,因为它更简短。
2^$i不幸的是,code>无法工作,因为bash不支持该操作符
你可以尝试添加这个
pow()
{
echo $(( ${1:?} ** ${2:?} ))
}
到您的代码(使用它就像pow[base][exponent]
(当然没有括号))
(请记住,我尚未测试此功能,因此可能无法按预期工作)
Edit:对于这个目的来说更好,因为它更短更简单。
2^$i不幸的是,code>无法工作,因为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}
是大括号展开表达式,$(..)
是算术表达式;它们不是运算符。