Linux shell编程(if、for、case、while语句的解释与应用)

简介: Linux shell编程(if、for、case、while语句的解释与应用)

正文


分支结构:if语句


语法:    

           if command; then

               ...

               语句列表

           else #else也可以不要

               ...

           fi #if结束

               command可以是任意的可以执行的shell命令或者脚本



从键盘上输入两个整数,输出较大者。

read a b
if [ $a -gt $b ] ; then
   echo $a
else
   echo $b
fi

从键盘上输入一个整数,判断这个整数是否为奇数。

read a
if [ `expr $a % 2` -eq 1 ];then
  echo "这是一个奇数"
else
  echo "这不是一个奇数"
fi


多路分支语句  case语句


       语法:

           case 字符串变量 in

               模式1)

                   ...语句列表

                   ;; #类似于c语言中的break,但是在shell里,;;一定要有的。

               模式2)

                   ...

                   ;;

               ...

               模式n)

                   ;;

           esac #case结尾反过来写


     

               case语句真正的功能强大之处在于它可以使用模式,而不是固定的字符匹配

               一个模式是一串正规的字符和特殊通配符组成的字符串。

               //case模式可以用正则表达式(非常有限地支持)


特殊的通配符:

* shell通配符 代表任意多个或者0个字符(注,在正则表达式中,* 代表匹配0个或者多个先前字符)

? shell通配符 代表一个任意字符(注,在正则表达式中,? 代表匹配0个或者1个先前字符(模式))


shell中的 ;; 双引号相当于C语言中的break。


判断一个文件名,是C源文件还是c++源文件(.cpp)还是头文件:

case $1 in    #获取第一个参数
  *.c)
    echo "C文件"  ;;
  *.cpp)
    echo "C++文件"  ;;
  *.h)
    echo "头文件"  ;;
esac


循环语句


for语句


       语法:

           for 变量名 in 单词表

           do

               ...

               语句列表

           done


               "单词表":以空白符分隔开的字符串的列表

                   eq:

                       a b c ddd "a c"  几个单词? --》5个单词

                       for语句执行的次数就是“单词表”中的单词个数

                       并且吗,每次执行时,“变量名”的值 就是下一个单词的值。

for i in a b c ddd "a c"
do
    echo $i
done
        #输出 a b c ddd "a c"


用for语句求100以内的奇数之和


(())双圆括号使得可以在shell使用c语言的for风格

但是,只能在for这一行可以使用 ,其它行还是shell风格,如下代码:

for ((i=0;i<100;i++)) 
do
  if [ `expr $i % 2` -eq 1 ];then
    let n=n+i  #n=`expr $n + $i`
  fi
done
echo $n


while语句


while 命令或者表达式

       do

           ...

           语句列表

       done


练习:    

       写一个shell脚本计算一个普通文件有多少行。

       提示:

           输入重定向

           read是一行一行的读

line=0
while read var
do
  line=`expr $line + 1`
done <test.txt
echo "line = $line"


until 命令或者表达式


语法:


do

       ...语句列表

done


until和while功能类似,但是不同的是until只当测试的命令或者表达式为假时(不成功)才执行循环体内的命令列表,条件成立或成功,就退出循环,这一点和while是相反的。


输出1000以内的质数:

i=2
j=3
echo -n "1000以内的质数有:1 2 "
while [ $j -le 1000 ]
do
  until [ $i -eq $j ] 
  do
    if [ `expr $j % $i` -eq 0 ];then
    {
      break
    }
    fi
    let i=i+1
  done
  if [ $i -eq $j ];then
    echo -n "$j "
  fi
  let j=j+1
  i=2
done


break 和continue


break n

               跳出第n层循环

continue n

               转到最近的第n层循环语句执行下一轮循环

               数字n表示第几层循环

           break n ,continue n n不写默认是1,和c语言含义是一样的。


获取参数


将命令行中的参数相加,如在终端输入 ./1.sh 5 3,则输出 8.


v=`expr $1 + $2`
echo "$v"
相关文章
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
14天前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
35 5
|
1月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
67 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
27天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
29天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
30 0
|
2月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
44 0
|
网络协议 Shell Linux
【Linux】shell编程基础(超详细,入门看这一篇就够了)(下)
【Linux】shell编程基础(超详细,入门看这一篇就够了)(下)
106 0
|
6月前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
下一篇
无影云桌面