大二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) 编辑 收藏 举报