写在开头开头
近日新型冠状肺炎很严重,学校也开不了学了,在MOOC上学习操作系统原理时
看到老师留下的全靠自觉完成的实验题,在这里记录一下。
本篇给出 1,2两题的解析,3,4在下一篇中分享
3.1 (实验目的:熟悉Windows批处理编程)在Windows环境下,编写一个批处理程序(算命大师.bat),程序运行后,输入:出生年月日(例如20000731)。系统输出你的属相和星座,例如:你属兔,狮子座。
3.2 (实验目的:熟悉Linux脚本编程)在Linux环境下,编写一个Shell脚本理程序,能统计给定文本文件的单词数,行数。
3.3 (实验目的:了解操作系统生成的概念,熟悉Linux内核编译和裁剪)在Ubuntu或Fedora环境下裁剪和编译Linux内核,并启用新的内核。源代码下载网址:www.kernel.org.
3.4 (实验目的:熟悉Linux系统调用原理)在Ubuntu或Fedora环境下为Linux内核增加1-3个新的系统调用,并启用新的内核,编写一个应用程序测试新增加的系统调用是否能正确工作。源代码下载网址:www.kernel.org.
----------------------------------------------------------------------------------------------------
3.1Windows批处理编程
运行效果
代码展示
@echo off
REM 声明采用UTF-8编码
chcp 65001
set /p birthday=请输入出生年月日(格式如20000412):
set year=%birthday:~0,4%
set month=%birthday:~4,2%
set day=%birthday:~6,2%
set /a yy=%year%%%12
if %yy%==0 ( set bb=你属猴,
) else if %yy%==1 ( set bb=你属鸡,
) else if %yy%==2 ( set bb=你属狗,
) else if %yy%==3 ( set bb=你属猪,
) else if %yy%==4 ( set bb=你属鼠,
) else if %yy%==5 ( set bb=你属牛,
) else if %yy%==6 ( set bb=你属虎,
) else if %yy%==7 ( set bb=你属兔,
) else if %yy%==8 ( set bb=你属龙,
) else if %yy%==9 ( set bb=你属蛇,
) else if %yy%==10 ( set bb=你属马,
) else if %yy%==11 set bb=你属羊,
if %month%==04 (
if %day% leq 19 ( echo %bb%白羊座 )else echo %bb%金牛座
) else if %month%==05 (
if %day% leq 20 ( echo %bb%金牛座 )else echo %bb%双子座
) else if %month%==06 (
if %day% leq 21 ( echo %bb%双子座 )else echo %bb%巨蟹座
) else if %month%==07 (
if %day% leq 22 ( echo %bb%巨蟹座 )else echo %bb%狮子座
) else if %month%==08 (
if %day% leq 22 ( echo %bb%狮子座 )else echo %bb%处女座
) else if %month%==09 (
if %day% leq 22 ( echo %bb%处女座 )else echo %bb%金牛座
) else if %month%==10 (
if %day% leq 23 ( echo %bb%天秤座 )else echo %bb%天蝎座
) else if %month%==11 (
if %day% leq 22 ( echo %bb%天蝎座 )else echo %bb%射手座
) else if %month%==12 (
if %day% leq 21 ( echo %bb%射手座 )else echo %bb%摩羯座
) else if %month%==01 (
if %day% leq 19 ( echo %bb%摩羯座 )else echo %bb%水瓶座
) else if %month%==02 (
if %day% leq 18 ( echo %bb%水瓶座 )else echo %bb%双鱼座
) else if %month%==03 (
if %day% leq 20 ( echo %bb%双鱼座 )else echo %bb%白羊座
)
pause
简单解释一下
-
@echo off 是为了 此语句以下的命令语句不会在输出屏显示
-
chcp 65001 是声明采用UTF-8编码
-
set /p birthday= -->进行读入赋值时 要加/p 会将输入的字符串赋值给birthday
-
set year=%birthday:~0,4% -->时从 birthday的第0位开始向后截取4个字符, 并赋给year
-
set /a yy=%year%%%12
进行运算赋值时 要加/a %year% 代表year指代的值 %% 表示取余运算 -
%day% leq 19 leq是小于等于的意思 另外:EQU - 等于 NEQ - 不等于 LSS - 小于 GTR - 大于 GEQ - 大于或等于
3.2Linux脚本编程
运行效果
代码展示
#!/bin/sh
echo 请输入要查询的文档名称
read filename
echo $filename所含单词数为
cat $filename | wc -w
echo $filename所含行数为
cat $filename | wc -l
简单解释一下
- read filename 读入输入的字符串并赋值给filename
- cat $filename | wc -w wc -w 是查取 变量filename 所指代的文件的单词数
- cat $filename | wc -l wc -l 是查取 变量filename 所指代的文件的行数
希望以上可以帮到你!
来源:CSDN
作者:小赵de碎星采摘馆
链接:https://blog.csdn.net/zsh1184528359/article/details/104501628