【Linux上机实验】新实验四 shell编程
【前 言】
愿,所有相遇,都恰逢其时!
愿,此刻心头,正满怀欣喜!
---你好,朋友,欢迎你!
---对此篇博客中有任何问题和不懂的可以咨询QQ:2759590905
1. 利用vi 建立一个脚本文件,该文件在用户输入年、月之后,自动打印数出该年该月的日历。然后以2种不同方式执行该脚本。
执行脚本方法:
方法一:以脚本名作为bash参数(格式:$bash 脚本名 [参数])
$bash mycal 回车
创建一个脚本文件,使用vi编辑器来创建一个新的脚本文件:
1.打开终端
2.输入 vi mycal.sh,创建一个名为"mycal.sh"的文件。
3.进入文本编辑模式,按下 i 键。
4.将下面的脚本内容粘贴到文本编辑器中:
#!/bin/bash
echo -n "Please enter the year:"
read year
echo -n "Please enter the month:"
read month
cal $month $year
5.退出编辑模式,按下 Esc 键,然后输入 :wq 保存并退出。
方法一:通过以下命令执行脚本
bash mycal.sh
结果截屏:
方法二:通过以下命令首先使脚本文件可执行,然后执行脚本
chmod u+x mycal.sh
. mycal.sh
结果截屏:
2.编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Two words match”,不同则显示“Two words do not match”,最后显示“End of program”。
1.打开终端
2.输入 vi word.sh,创建一个名为"word.sh"的文件。(这里的word名字可以自定义)
3.进入文本编辑模式,按下 i 键。
4.将下面的脚本内容粘贴到文本编辑器中:
#!/bin/bash
echo "Enter the first word:"
read word1
echo "Enter the second word:"
read word2
if [ "$word1" = "$word2" ]; then
echo "Two words match"
else
echo "Two words do not match"
fi
echo "End of program"
结果截屏:
3.编程使用case结构创建一个简单的菜单,屏幕显示菜单:
a. Current date and time
b. User currently logged in
c. Name of the working directory
d. Contents of the working directory
Enter a,b,c or d:
根据用户输入选项做相应操作。
1.打开终端
2.输入 vi work.sh,创建一个名为"work.sh"的文件。(这里的work名字可以自定义)
3.进入文本编辑模式,按下 i 键。
4.将下面的脚本内容粘贴到文本编辑器中:
#!/bin/bash
echo "a. Current date and time"
echo "b. User currently logged in"
echo "c. Name of the working directory"
echo "d. Contents of the working directory"
echo "Enter a, b, c, or d:"
read choice
case "$choice" in
a)
date
;;
b)
who
;;
c)
pwd
;;
d)
ls
;;
*)
echo "Invalid option"
;;
esac
结果截屏:
4.修改上题,使用户可以连续选择直到想退出时才退出(用while语句实现)。
1.用vi打开你上一题创建的脚本文件
2.进入文本编辑模式,按下 i 键。
3.将下面的脚本内容替换之前的脚本:
#!/bin/bash
while true; do
echo "a. Current date and time"
echo "b. User currently logged in"
echo "c. Name of the working directory"
echo "d. Contents of the working directory"
echo "e. Exit"
echo "Enter a, b, c, d, or e:"
read choice
case "$choice" in
a)
date
;;
b)
who
;;
c)
pwd
;;
d)
ls
;;
e)
echo "Exiting..."
break
;;
*)
echo "Invalid option"
;;
esac
done
结果截屏:
5.修改上题,使用户可以连续选择直到想退出时才退出(用until语句实现)。
1.用vi打开你上一题创建的脚本文件
2.进入文本编辑模式,按下 i 键。
3.将下面的脚本内容替换之前的脚本:
#!/bin/bash
until [ "$choice" = "e" ]; do
echo "a. Current date and time"
echo "b. User currently logged in"
echo "c. Name of the working directory"
echo "d. Contents of the working directory"
echo "e. Exit"
echo "Enter a, b, c, d, or e:"
read choice
case "$choice" in
a)
date
;;
b)
who
;;
c)
pwd
;;
d)
ls
;;
e)
echo "Exiting..."
;;
*)
echo "Invalid option"
;;
esac
done
结果截屏:
6.编程实现简单算术运算,要求用户输入一个表达式并输入结果,程序会判断用户输入的结果是否正确,并给出提示。直到用户输入‘q’时,才退出执行。
1.打开终端
2.输入 vi yunsuan.sh,创建一个名为"yunsuan.sh"的文件。(这里的yunsuan名可以自定义)
3.进入文本编辑模式,按下 i 键。
4.将下面的脚本内容粘贴到文本编辑器中:
#!/bin/bash
echo Hello! @_@
echo Welcom to the calculate testing!
echo You can input an expretion such as 2*2 or 3+1, and input the answer
echo I will tell you whether you are right or wrong.
echo You can input 'q' to exit.
echo "Now let's begin!"
number1=0;
while [ "$number1" != "q" ]
do
echo Input the first number:
read number1
if [[ number1 -eq "q" ]]
then
break;
fi
echo Input the operator:
read oper
echo Input the second number:
read number2
echo Input the answer:
read yourAnswer
case $oper in
+) myAnswer=`expr $number1 + $number2`;;
-) myAnswer=`expr $number1 - $number2`;;
\*)myAnswer=`expr $number1 \* $number2`;;
/)
if [ $number2 -eq 0 ]
then
echo "Sorry! :-("
echo "0 cannot be the divisor"
continue
else
myAnswer=`expr $number1 / $number2`
fi
;;
*) echo Error!;;
esac
if [ $myAnswer -eq $yourAnswer ]
then
echo ":-)" Congratulations!
echo Your are right!
else
echo ":-(" Sorry!
echo You are wrong!
echo "The right answer is:"
echo "$number1 $oper $number2 = $myAnswer"
fi
echo "Enter the q key to exit, continue with enter key"
done
1.给出执行过程及结果截屏
1.首先输出欢迎语和提示信息。
2.设置变量number1的初始值为0。
3.进入while循环,当用户输入q时循环结束。
4.提示用户输入第一个数字,并将输入的值赋给变量number1。
5.如果用户输入的是q,则跳出循环。
6.提示用户输入操作符并赋给变量oper。
7.提示用户输入第二个数字并赋给变量number2。
8.提示用户输入答案并赋给变量yourAnswer。
9.使用case语句根据操作符计算myAnswer的值。
10.检查用户输入的答案yourAnswer和程序计算的答案myAnswer是否相等,如果相等则输出"Congratulations! You are right!",否则输出"Sorry! You are wrong!"并显示正确的答案。
11.提示用户输入q退出,或者按回车键继续下一轮运算。
12.循环回第3步,直到用户输入q退出。
结果截屏:
2.分析该程序,理解其中的语句及用法,在程序中给出适当的注释。
这个脚本,让用户输入算术表达式并检查答案是否正确。
部分的注释:
#!/bin/bash
# 以上为shebang,指定了该脚本使用的解释器为/bin/bash
echo Hello! @_@
echo Welcom to the calculate testing!
echo You can input an expretion such as 2*2 or 3+1, and input the answer
echo I will tell you whether you are right or wrong.
echo You can input 'q' to exit.
echo "Now let's begin!"
# 以上为欢迎语和提示信息
number1=0;
# 初始化变量number1为0
while [ "$number1" != "q" ]
do
# 进入循环,直到用户输入"q"退出
echo Input the first number:
read number1
# 提示用户输入第一个数字,并将输入的值赋给变量number1
if [[ number1 -eq "q" ]]
then
break;
fi
# 如果用户输入的是"q",则退出循环
echo Input the operator:
read oper
# 提示用户输入运算符,并将输入的值赋给变量oper
echo Input the second number:
read number2
# 提示用户输入第二个数字,并将输入的值赋给number2
echo Input the answer:
read yourAnswer
# 提示用户输入答案,并将输入的值赋给yourAnswer
case $oper in
+) myAnswer=`expr $number1 + $number2`;;
-) myAnswer=`expr $number1 - $number2`;;
\*)myAnswer=`expr $number1 \* $number2`;;
/)
if [ $number2 -eq 0 ]
then
echo "Sorry! :-("
echo "0 cannot be the divisor"
continue
else
myAnswer=`expr $number1 / $number2`
fi
;;
*) echo Error!;;
esac
# 根据运算符计算myAnswer的值
if [ $myAnswer -eq $yourAnswer ]
then
echo ":-) Congratulations!"
echo Your are right!
else
echo ":-(" Sorry!
echo You are wrong!
echo "The right answer is:"
echo "$number1 $oper $number2 = $myAnswer"
fi
# 判断用户的答案是否正确,并给出相应的提示
echo "Enter the q key to exit, continue with enter key"
done
# 结束循环
【后 言】
愿,所有相遇,都恰逢其时!
愿,此刻心头,正满怀欣喜!
---你好,朋友,再见,加油!
本文来自博客园,作者:Cloudservice,转载请注明原文链接:https://www.cnblogs.com/whwh/p/17816500.html,只要学不死,就往死里学!