赞
踩
- 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
- 【CentOS Linux 7】实验2【Shell编程及应用】
- 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】
- 【CentOS Linux 7】实验4【Linux网络应用、Linux下C语言编程】
- 【CentOS Linux 7】实验5【安装VScode,并用VScode编写HTML网页】
- 实验4文档:gcc编译器、Linux网络配置基础
目 录
(1)使用for语句创建一个shell程序,其功能为1+2+3+…+n。
- Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务;
- 学会shell编程的变量、表达式、顺序、选择、循环及函数的使用方法;
- 学会编写基本的SHELL应用程序。
程序源代码为:
#!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行 read -p "what's n? :" n # read-p 后面跟提示信息,即在输入前打印提示信息 s=0 # 初始化累加和 for (( i=1; i<=$n; i=i+1)) # for循环,用来累加和 do s=$(( $s+$i )) # 增加s的值 done echo "1+2+...+$n = $s" # 输出累加和s运行截图为:
- #!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
- num=$[RANDOM%100+1] # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
- echo "$num" # echo 命令用于向窗口输出 产生的随机数。
- while : # while循环语句
- do
- read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
- # 使用 read 提示用户猜数字;read-p 后面跟提示信息,即在输入前打印提示信息
- if [ $cai -eq $num ] #if条件语句;如果 随机数 等于 用户所输入的数字
- then
- echo "恭喜,猜对了" #if语句,命令行1:输出“恭喜,猜对了”
- exit #exit命令用于退出目前的shell程序
- elif [ $cai -gt $num ] #if语句,命令行2
- then
- echo "Oops,猜大了"
- else
- echo "Oops,猜小了"
- fi # if else-if else 语法格式 终止
- done # while循环语句 终止

程序源代码为:
#!/bin/bash read -p "请输入一个整数:" num1 # 从命令行输入1个数字 read -p "请输入一个整数:" num2 # 从命令行输入1个数字 read -p "请输入一个整数:" num3 # 从命令行输入1个数字 tmp=0 # 定义1个临时变量存放数据 # 将num1和num2进行比较,如果num1大于num2,将num1和num2的值对调 if [ $num1 -gt $num2 ];then tmp=$num1 num1=$num2 num2=$tmp fi if [ $num1 -gt $num3 ];then # 如果num1大于num3,将num1和num3的值对调 tmp=$num1 num1=$num3 num3=$tmp fi if [ $num2 -gt $num3 ];then # 如果num2大于num3,将num2和num3的值对调 tmp=$num2 num2=$num3 num3=$tmp fi echo "排序后数据(从小到大)为:$num1,$num2,$num3"
运行截图为:
- #!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
- game=(石头 剪刀 布) #定义数组,保存所有出拳的可能性;0:石头,1:剪刀,2:布
- num=$[RANDOM%3] #随机数0 1 2
- computer=${game[$num]} #通过 随机数,获取计算机的出拳手势
-
- echo "请根据下列提示选择您的出拳手势"
- echo "1.石头"
- echo "2.剪刀"
- echo "3.布"
-
- read -p "请选择 1‐3:" person #read-p 后面跟提示信息,提示用户出拳
- #通过case语句判断用户输入的值是1、2还是3,根据不同的输入 输出 不同的结果
- case $person in
- 1)
- if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 平局
- then
- echo "平局"
- elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 用户赢
- then
- echo "你赢"
- else
- echo "计算机赢" #不符合以上两种情况,则 计算机赢
- fi;;
- 2)
- if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 计算机赢
- then
- echo "计算机赢"
- elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 平局
- then
- echo "平局"
- else
- echo "你赢" #不符合以上两种情况,则 用户赢
- fi;;
- 3)
- if [ $num -eq 0 ] #如果电脑产生的随机数是0,则 用户赢
- then
- echo "你赢"
- elif [ $num -eq 1 ] #如果电脑产生的随机数是1,则 计算机赢
- then
- echo "计算机赢"
- else
- echo "平局" #不符合以上两种情况,则 平局
- fi;;
- *) #case命令的最后运算式
- echo "必须输入 1‐3 的数字!" #若用户输入错误,则输出 提示信息
- esac

程序源代码为:
#!/bin/bash echo -e "\n" #换行 for((i=1;i<=9;i++)) #第一重for循环 do for((j=1;j<=i;j++)) #第二重for循环 do echo -n -e "$j*$i="$[j*i]"\t" #打印九九乘法表 done echo -e "\n" #换行 done运行截图为:
- #!/bin/bash # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
- # ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
- for i in "ls *.$1"
- do
- mv $i ${i%.*}.$2 # mv命令用来为文件或目录改名、或将文件或目录移入其它位置
- done
- #!/bin/bash
- read -p "请输入一个年份:" year # 使用 read-p 提示用户输入年份
-
- if [ "$year" = "" ];then #如果用户没有输入任何内容,则输出提示信息
- echo "没有输入年份"
- exit
- fi
-
-
- if [[ "$year" =~ [a‐Z] ]];then #如果用户输入的是a-Z中的字符,则输出提示信息
- echo "你输入的不是数字"
- exit # exit命令用于退出目前的shell
- fi
-
-
- if [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then #根据用户输入,判断闰年
- echo "$year年是闰年" #能被4整除且不能被100整除的年份,是闰年
- elif [ $[year % 400] -eq 0 ];then #能被400整除的年份,是闰年
- echo "$year年是闰年"
- else
- echo "$year年不是闰年"
- fi

- #!/bin/bash
- for i in {1..3} #for循环;用户有3次输入用户名与密码的机会
- do
- read -p "请输入用户名:" user #read-p 后面跟提示信息,即在输入前打印提示信息
- read -p "请输入密码:" pass
- if [ "$user" == 'tom' -a "$pass" == '123456' ];then
- #若用户名与密码匹配,则执行下列语句
- echo "Login successful"
- exit # exit命令用于退出目前的shell
-
- fi
- done
- echo "Login Failed"
程序源代码为:
#!/bin/bash #输入数字n显示斐波那契数列的前n项 a=1 #第一项 b=1 #第二项 c=0 #中间变量,用来储存a的值 Fibonacci=0 #斐波那契数列的第n项 read -p "输入数字n,显示数列的前n项" n #如果n<=3则输出前三项 if [ "${n}" -le "3" ]; then case ${n} in "1") Fibonacci=${a} echo -e "${Fibonacci}" ;; "2") Fibonacci=${a} echo -e "${Fibonacci}" echo -e "${Fibonacci}" ;; "3") Fibonacci=${a} echo -e "${Fibonacci}" echo -e "${Fibonacci}" Fibonacci=$((${a}+${b})) echo -e "${Fibonacci}" esac fi #如果n>=4,输出剩余的项 if [ "${n}" -ge "4" ]; then Fibonacci=${a} echo -e "${Fibonacci}" echo -e "${Fibonacci}" Fibonacci=$((${a}+${b})) echo -e "${Fibonacci}" for ((i=4; i<=${n}; i=i+1 )) do c=${a} a=${b} b=$((${c}+${b})) Fibonacci=$((${a}+${b})) echo -e "${Fibonacci}" done fi运行截图为:
通过本次实验,我对Shell更加熟悉。通过实验,我了解到:Shell脚本可以作为命令语言互动式地解释和执行用户输入的命令,还能够用来进行程序设计,它提供了定义变量和参数的手段以及丰富的过程控制结构。
在实验中,我体会到了Shell的灵活性。Shell程序基本语法较为简单,主要由开头部分、注释部分以及语句执行部分组成。它还可以提供说明与使用变量的功能。另外,在Shell中,所有变量的取值都是一个字符,我认为 这非常方便。Shell在开始执行时,就已经定义了一些与系统的工作环境相关的变量,如:HOME:用于保存注册目录的完全路径名;PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
此次实验,收获甚多,课下我会继续努力,多查资料,勤于练习!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。