2013-02-24 shell脚本练习题

回复 收藏
邱李笔试题shell脚本:
请详细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字。
10 31 53 77  105 141 .......

试题解析:
我想大多数人都会去比较这些数字的差值:
10  31  53  77  105  141
   21   22   24   28   36
但是这个差值看,并没有什么规律,而我们再仔细看的时候,发现这个差值的差值是有规律的:
10  31  53  77  105  141
   21   22   24   28   36
       1      2     4     8
所以,最终得出规律

shell脚本如下:{{{密码回复可见}}}
2014-02-24 12:05 举报
已邀请:
0

xzzlamp

赞同来自:

11
0

alvinnull

赞同来自:

xuexi
0

smatch

赞同来自:

#!/bin/bash
n=10
for i in {1..16}
do
    echo $n
    n=$[$n+20+2**(i-1)]
done
0

elvis

赞同来自:

学习了
0

xiaoweili

赞同来自:

学习了
0

siudern

赞同来自:

11111
0

loveangeler

赞同来自:

看看
0

hsm

赞同来自:

学习
0

Toornix

赞同来自:

#!/bin/bash

x=1
y=21
z=10
for i in `seq 1 16`
do
        echo -n -e "$z\t"
        z=$(($z+$y))
        y=$(($y+$x))
        x=$(($x*2))
done
echo
0

阿杰

赞同来自:

1
0

monga

赞同来自:

学习
0

13733862362@163

赞同来自:

shell好难
0

tytywu

赞同来自:

看看
0

tytywu

赞同来自:

#! /bin/sh

x=21
m=10

echo $m
for i in `seq 1 10`; do
   k=$[$i-1]
   j=$[2**$k]
   m=$[$m+$x]
   echo $m
   x=$[$x+$j]
done
# 答案里好像有上错误吧,2的0次方没有算,有点错位了!
0

cj2017

赞同来自:

#!/bin/bash
m=10
i=0
echo $m
while [ $i -le 16 ]
do
m=$[$m+20+2**$i]
i=$[$i+1]
echo $m
done
0

sunwang33

赞同来自:

学习一下。
0

HMOM

赞同来自:

学习
0

kevinjin

赞同来自:

递归吗?
0

xebszw

赞同来自:

+1
0

xebszw

赞同来自:


请教一下脚本中  2**(i-1)  的两个*表示什么意思
0

riverxyz

赞同来自:

学习
0

小璇Linux

赞同来自:

学习
0

a_leon

赞同来自:

  1. #!/bin/bash
  2.         i=8 j=36 k=141
  3. for a in `seq 1 10`;do
  4.         i=$[2*$i];
  5.         j=$[$j+$i];
  6.         k=$[$k+$j];
  7.         echo $k;
  8. done
0

linuxcp

赞同来自:

{:4_91:}
0

幻夜猫儿

赞同来自:

本帖最后由 幻夜猫儿 于 2016-8-29 15:09 编辑
  1. #!/bin/bash
  2. a=10
  3. for i in `seq 0 14`;
  4. do
  5.   echo $a
  6.   j=$[ 2**$i ]
  7.   $a=$[ $a+20+$j ]
  8. done
0

标哥

赞同来自:

  1. #! /bin/bash
  2. for ((i=0,j=0;i<11;i++))
  3. do
  4.    arr[j]=$[ 2**$i]
  5.    let "j++"
  6. done
  7. #echo ${arr[@]}
  8. arrb[0]=21
  9. for ((j=1,i=0;j<11;j++))
  10. do
  11. let " arrb[j]=arrb[j-1]+arr[i] "
  12. # echo "arr:  ${arr[@]} "
  13. let "i++"
  14. done
  15. #echo ${arrb[@]}

  16. #同样的方法求arrc
  17. arrc[0]=10
  18. for ((j=1,i=0;j<11;j++))
  19. do
  20.    let "arrc[j]=arrc[j-1]+arrb[i]"
  21.    let "i++"
  22. done
  23. echo ${arrc[@]}
0

标哥

赞同来自:

gxp2008 发表于 2016-3-24 10:30
我是想着用shell数组搞。shell数组似乎没有办法直接做数学运算。
那难道要存到数组,在一个一个取出来么

看176楼, 可以用数组的.
0

xgmxm

赞同来自:

学习
0

hhao

赞同来自:

1
0

huanglin

赞同来自:

完全不知道脚本该这么写
0

王焱峰

赞同来自:

1
0

21号新秀

赞同来自:

1
0

leewillxlw

赞同来自:

学习一下
0

ryanlin

赞同来自:

学习
0

J_C

赞同来自:

看看
0

zhangyanlong

赞同来自:

111
0

冷凌

赞同来自:

n=10 k=20 j=1 s=0 echo $n while [ $s -lt 20 ] do     let n=$n+$k+$j     let j=$j*2     let s+=1     echo $n done
0

liuyunge

赞同来自:

本帖最后由 liuyunge 于 2016-9-8 23:38 编辑

#!/bin/bash

##written by 20160908

sum=141
m=36
n=8

for i in {1..10};do
   sum=$(expr "$sum" + "$m" + "$n")
   m=$(expr "$m" + "$n")
   n=$(expr "$n" \* "2")
   echo "$sum"
done
0

泡面的幸福

赞同来自:

学习一下
0

yangguang_tu

赞同来自:

ssss

0

13600827194

赞同来自:

学习

0

ichbinww

赞同来自:

kankan

0

kw是id

赞同来自:

 不会写 看看

0

qwlp19910807

赞同来自:

看看

0

西瓜糖

赞同来自:

!/bin/bash
Description: This script is to check system disk info.
Author: Jiazhi Yang
Date: 20/11/2016
Script Name: count.sh
a=10
b=21
for i in seq 0 8 
do
    c=$((2**$i))
    a=$(($a+$b))
    b=$(($c+$b))
    echo $a
done

0

nmzhaoliming

赞同来自:

study

0

Ject1992he - linux学习

赞同来自:

学习

0

loujb

赞同来自:

回复

0

sun330

赞同来自:

学习

0

dongdongchen

赞同来自:

看看

0

大雁

赞同来自:

  5 s[0]=10

  6 for i in seq 1 15

  7 do

  8   let a=$i-1

  9   let s[$i]=s[$a]+20+2**$a

 10 done

 11 echo ${s

  • }

  • 0

    王斌

    赞同来自:


    #! /bin/bash
    a=10
    echo $a
    for n in `seq 0 9`
    do
        b=$[20+(2**$n)]
        a=$[$a+$b]
        echo $a
    done

    0

    肖永安

    赞同来自:

    1

    0

    失落的乐章

    赞同来自:

    学习

    0

    杨银根

    赞同来自:

    学习

    回复帖子,请先登录注册

    退出全屏模式 全屏模式 回复
    评分
    可选评分理由: