提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Shell它作为计算机底层的脚本语言,很重要
一、Shell任务
1、输入两个参数 a b 常数。a b 范围为 0-1023,即共 1024 个点。
脚本实现 以每 2 个为一小组,每 32 个为一大组。
即 当 a b 分别为(0,1) 或(2,3) 时输出结果为 1 跳
当 a b 分别为(1,2) 或(3,4) 时输出结果为 3 跳
当 a b 分别为(0,32)或(1,32)时输出结果为 5 跳
例:./hop.sh 29 31 两点跳数为 3 跳
2、C 语言实现判断最大值,将计算结果存到该次运行的临时文件中。
用 Shell 脚本,循环运行十次该 C 程序,每次运行时脚本修改 C 程序
中的两个输入值,编译运行得到结果,脚本从临时文件中取出结果并累加,通过
脚本循环结束输出累加结果。以上需在只执行一次 shell 程序后完成,不再手动
操作。
1.第一题
代码如下(示例):
while true
do
read -p "请输入两个整数:" a b c
if [[ $(($a/32)) = $(($b/32)) ]]
then
let sum=$(($b/2-$a/2))
if [[ $sum = 0 ]]
then
echo "1跳"
continue
else
echo "3跳"
fi
else
echo "5跳"
fi
done
2.第二题
代码包括C语言的代码和shell代码,其中C语言代码给它命名为max.c
#include<stdio.h>
int main()
{
int i=0;
FILE *fp;
fp = fopen("linshi.txt","w");
i++;
int a,b,max;
printf("输入\n");
scanf("%d %d",&a,&b);
max = funx(a,b);
fprintf(fp,"%d\n",max);
return 0;
}
int funx(int a,int b)
{
if(a>b)
return a;
else
return b;
}
然后shell要循环调用上述代码十次,并将linshi.txt文件中得到的数据统计,其代码如下
for ((i=0;i<10;i++))
do
./max
while read rows
do
sum=$((sum=sum+rows))
done < linshi.txt
done
echo $sum
总结
今天搞得就是个shell和C语言联合使用的地方,作为一个并行计算的萌新,我感觉摸不着头脑。最近在看一些并行计算的基础,希望有朝一日成长为健壮的萌新。