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"
相关文章
|
27天前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
56 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
9天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
28天前
|
Shell
Shell编程(下)
Shell编程(下)
85 1
|
28天前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
37 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
60 12
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
20 0
|
22天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
66 1
|
8天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
30 2
6种方法打造出色的Shell脚本