大二linux作业总结

 

  学期作业,先贴个题目:

  写一个shell脚本,包含两个数字数组array1和array2,分别初始化为{1,2,3,4,5}和{1,4,9,16,25}。脚本生成并显示一个数组,其中的元素是这两个数组中对应元素的和,数组中的第一个元素是1+1=2,第一个元素是2+4=6等

  题目看起来很简单,不过凭我们学的三脚猫功夫,一下手就知有没有啊TAT...

  先去网上学了shell脚本关于数组的基本知识,可以自行百度一大堆,贴下刚开始的源码

 1 #!bin/bash
 2 a=( 1 2 3 4 5 )
 3 b=( 6 7 8 9 10 )
 4 c=( 0 0 0 0 0)
 5 i=0
 6 while [ $i -lt ${#a[@]} ]
 7 do
 8   let " ${c[$i]} = ${a[$i]} + ${b[$i]} "
 9   echo ${c[$i]}
10   let " i = $i + 1 "
11 done

  其实最开始用的是 expr那种语句写的,不过一直报错(错误代码在下方),至今不知原因,就找到了另一种方法写,欢迎大佬指教。

  

  然后总结下出现的各种bug

  1.

     这个是按平时运行shell脚本的命令,一直报错,上网搜了搜是shell脚本版本的问题。

     解决方案有三种,不过对我只有第一种有用:

  1)执行 bash example.sh

  2)将脚本第一行改为    #!/bin/bash

  3)执行./example.sh

  2.输入执行命令后又出现了第二个错误

  

  这个错误的意思是说  你在尝试非法赋值,又在网上搜了搜,发现是let语法错误,等号左边不需要声明变量的符号‘$’,然后我就删掉了这个符号出现了第三个错误orz...

  另外let语句等号左右有无空格都一样

  3.

  

  好吧,也许你已经猜到为什么报错了........

  因为没有把大括号(“{}”)去掉啊啊啊,被自己蠢哭_(:з」∠)_

  去掉之后就可以完美运行啦~~

 

 

希望自己的错误可以帮助到各位小伙伴!

 无误代码在下面:

#!bin/bash
a=( 1 2 3 4 5 )
b=( 6 7 8 9 10 )
c=( 0 0 0 0 0)
i=0
while [ $i -lt ${#a[@]} ]
do
  let " c[$i] = ${a[$i]} + ${b[$i]} "
  echo ${c[$i]}
  let " i = $i + 1 "#Also you can write like this:  let "i++"
done

 

posted on 2017-12-16 20:10  wastelands  阅读(624)  评论(0编辑  收藏  举报

导航