Bash将变量赋予权力

时间:2014-07-01 15:28:14

标签: bash

我在使用在线参考资料解决这个问题时遇到了麻烦,我需要将变量的强大功能作为一个参数,如下所示:

for i in `seq 0 4`
do
    ... --chunk_size=$((awk `BEGIN{print 10^$i}`))
done

但是这不起作用并且给我一个错误,我该怎么做?

3 个答案:

答案 0 :(得分:5)

只需将Bash与**

一起使用即可
for i in {0..4}
do
    ... --chunk_size="$(( 10 ** i ))"
done

示例:

$ for i in {0..4}; do echo "$(( 10 ** i ))"; done
1
10
100
1000
10000

答案 1 :(得分:3)

使用bc

for i in {0..4}; do bc -l <<<"10^$i"; done
1
10
100
1000
10000

使用awk

for i in {0..4}; do awk 'BEGIN{print 10^'$i'}'; done
1
10
100
1000
10000

所以你的代码看起来像这样:

for i in `seq 0 4`
do
    ... --chunk_size=$(bc -l <<< "10^$i")
done

for i in `seq 0 4`
do
    ... --chunk_size=$(awk 'BEGIN{print 10^'$i'}')
done

答案 2 :(得分:0)

使用-v选项将bash变量传递给awk

for i in `seq 0 4`
do
    chunk_size=$(awk -v"i=$i" 'BEGIN{print 10^i}');
    echo $chunk_size
done

输出:

1
10
100
1000
10000