linux学习之shell练习



linux学习之shell练习



1、描述shell程序的运行原理(可附带必要的图形说明);

2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟);

总结文章:http://pizimsn.blog.51cto.com/7002551/1697671

3、总结课程所讲的所有循环语句、条件判断的使用方法及其相关示例;(if (jpg|png is not exist);echo ”You say a XX“)

总结文章:http://pizimsn.blog.51cto.com/7002551/1698001

4、总结文本处理工具sed及awk的用法;(必须附带示例)

总结文章:http://pizimsn.blog.51cto.com/7002551/1698005

5、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)

[[email protected] ~]# bash a.sh
/root/test/ 这个路径是存在的
drwxr-xr-x. 2 root root 4096 9月 24 20:58 /root/test/
[[email protected] ~]# cat a.sh
#!/bin/bash
#首行固定格式
#第5题 判断路径是否存在
dirname="/root/test/"
if [ -e $dirname ];then
   echo "$dirname 这个路径是存在的"
   echo `ls -ld $dirname`
else
   mkdir -p $dirname
fi
[[email protected] ~]#

6、写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)

#!/bin/bash
#首行固定格式
#第6题 判断给定两个数的大小
read -p "请输入两个数:" -t 100 nu1 nu2
if [ $nu1 -gt $nu2 ];then
   echo "$nu1 大于 $nu2"
elif [ $nu1 -lt $nu2 ];then
   echo "$nu1 小于 $nu2"
elif [ $nu1 -eq $nu2 ];then
   echo "$nu1 等于 $nu2"
else
   echo " "
fi

7、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)

#!/bin/bash
#首行固定格式
#第7题 求100以内奇数和
let sum=0
for i in $(seq 1 2 100);do
   let sum=$[$sum+$i]
done
echo $sum
#!/bin/bash
#首行固定格式
#第7题 求100以内奇数和
let sum=0
for ((i=1; i<=100;i++));do
   if [ $[$i%2] -eq 1 ];then
     let sum=$[$sum+$i]
   fi
done
echo $sum
#!/bin/bash
#首行固定格式
#第7题 求100以内奇数和
declare -i sum=0
declare -i i=1
while [ $i -le 100 ];do
        if [ $[$i%2] -ne 0 ];then
        let sum+=$i
        fi
        let i++
done
echo $sum

8、写一个脚本实现如下功能:

(1) 传递两个文本文件路径给脚本;

(2) 显示两个文件中空白行数较多的文件及其空白行的个数;

(3) 显示两个文件中总行数较多的文件及其总行数;

#!/bin/bash
#首行固定格式
#第8题,比较并统计所传递两个文件的空白行

if [ $# -lt 2 ];then
        echo "two"
        exit 1
fi
if [ $(grep "^$" $1 | wc -l) -gt $(grep "^$" $2 | wc -l) ];then
        echo "more blank line file is $1" && echo "there are $(grep "^$" $1 | wc -l) blank lines"
else
        echo "more blank line file is $2" && echo "there are $(grep "^$" $2 | wc -l) blank lines"
fi
if [ $(wc -l $1 | cut -d" " -f1) -gt $(wc -l $2 | cut -d" " -f1) ];then
        echo "more line is $1" && echo "File number: $(wc -l $1)"
else
        echo "more line is $2" && echo "File number: $(wc -l $2)"
fi

9、写一个脚本

(1) 提示用户输入一个字符串;

(2) 判断:

如果输入的是quit,则退出脚本;

否则,则显示其输入的字符串内容;

#!/bin/bash
#首行固定格式
#第9题,提示输入一个单词,然后比较
read -p "请你输入一个单词:" -t 100 word
if [ "$word" == ‘quit‘ ];then
   echo "你输入的是$word ,byebye !"
   exit 10
else
   echo "你输入的单词 $word 不是我想要的"
fi

10、写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)

#!/bin/bash
#首行固定格式
#第10题,打印2的n次方表
read -p "请你输入一个次方数" -t 100 num
let sum=1
for ((i=1; i <= "$num";i++));do
    let sum=$[$sum*2]
done
echo "2^$num = $sum"

11、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值的大小都将通过交互式输入来提供。

#!/bin/bash
#首行固定格式
#第11题
read -p "请输入sum/gcd/lcm: " -t 100 mode
read -p "请输入两个数:" -t 1000 nu1 nu2

let sumnum=0
function sum(){
  let sumnum=$[$nu1+$nu2]
  echo "$nu1 + $nu2 的和是$sumnum"
}

let gcdnum=0
function gcd(){
 c=$[$nu1%$nu2]
 while [ "$c" -ne 0 ];do
  let gcdnum=$c
  nu1=$nu2
  nu2=$c
  c=$[$nu1%$nu2]
 done
echo $gcdnum
}

let lcmnum=0
function lcm(){
  c=$[$nu1%$nu2]
 pro=$[$nu1*$nu2]
while [ "$c" -ne 0 ];do
 tmp=$c
 nu1=$nu2
 nu2=$c
 c=$((nu1%nu2))
done
 let lcmnum=$[$pro/$tmp]
echo "$lcmnum"
}

if [ "$mode" == "sum" ];then
    sum $nu1 $nu2
elif [ "$mode" == "gcd" ];then
    gcd $nu1 $nu2
elif [ "$mode" == "lcm" ];then
   lcm $nu1 $nu2
else
  echo "你的输入有误!"
fi

时间: 2024-10-07 08:26:09

linux学习之shell练习的相关文章

Linux学习之Shell基础

一.Shell概述 1.Shell概述: Shell:壳,Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序.类似于翻译,相当windows的操作界面 Shell同时还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux命令. 2.Shell的分类: Bourne Shell:从1979起Unix就开始使用的Bourne

Linux学习笔记——Shell基础(八)

+++++++++++++++++++++++++ +++++Shell基础+++++++++++++++++++++++++++++++ 1. Shell概述 Shell定义: Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至编写一些程序. Shell还是一个功能相当强大的编程语言,易编写.调试.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. Shell分类: Bo

linux 学习10 shell 基础

10.1 Shell概述 1.Shell是什么 ?Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序. ?Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. 2.Shell的分类 ?Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文

linux学习之shell脚本 ------- 输入与输出

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 前面介绍了Shell脚本的基础和运算符等,今天再来看一下关于Shell脚本的输入与输出. Shell输入与输出的一些命令: echo read cat 管道 tee exec Shell输入与输出的一些概念: 文件重定向 标准输入.输出和错误 合并标准输出和标准错误 使用文件描述符 下面,我们挨个看每个命令的用法: 输入输出命令的用法: 1. echo 该命令的作用是可以显

linux学习之shell脚本 ------- 控制流结构

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天开始学一些同其他高级语言一样的shell流控制结构 流控制语句: 1. if语句 语句格式: if condition1 then command1 else condition2 then command2 else command3 fi 注:if语句必须以fi终止. 如果没有condition2,则if语句可以简化为如下: if condition then co

linux学习之shell脚本 ------- 变量

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell中的一些变量. 变量类型: Shell中有以下几种变量: 1) 本地变量 2) 环境变量 3) 位置变量 4) 标准变量 5) 特殊变量 1) 本地变量 本地变量在用户现在的Shell生命周期的脚本中使用. 用法: variable-name=value set: 可以显示本地所有的变量 注意,本地变量如果加上readonly,则该本地变量不能被修改,

linux学习之shell脚本 ------- 引用与运算符

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误,所以有必要看一下各种引号的代表的意义与作用. 引用: 双引号" " 使用双引号可引用除字符$.`.\ 外的任意字符或字符串.如下所示: [email protected]:~/develop/workspace/shell_workspace$ echo -e "hello $SHEL

linux学习之shell脚本

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] Shell脚本基本元素: #!/bin/bash --- 第一行 # --- 注释 变量 流程控制结构 看一个简单的例子,学任何语言,我想大多数情况下都是从helloworld程序开始的,shell也是一门语言,我们也从helloworld开始. 新建一个名为helloworld.sh的文件,在里面写入: helloworld.sh #!/bin/sh #这是一个很简单的打

linux学习之shell基础篇

1.shell简介 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应. 2.shell的工作原理 系统初启后,核心为每个终端用户建立一个进程去执行Shell解释程序.它的执行过程基本上按如下步骤: (1)读取用户由键盘输入的命令行. (2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的形        式. (3)