栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Linux基础 04 - Shell脚本-控制语句-函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux基础 04 - Shell脚本-控制语句-函数

  本篇文章接上一篇Shell脚本,主要讲shell的控制语句的语法和函数的创建和使用。像其他编程语言一样,shell同样有着自己的语法,跟C语言比起来在语法方面还是有着一些不同之处。

Shell脚本
      • 控制语句
        • if 控制语句
        • case 控制语句
      • 一些语法
        • shell中的判断式
        • 整数判断
        • 字符串判断
        • 逻辑运算
        • 文件判断
        • 文件权限判断
        • 文件时间戳判断
      • 循环语句
        • while循环
        • for循环
      • Shell函数
      • Shell脚本调用

控制语句 if 控制语句
#1.
    if 判断式
    then
        语句块1;
    fi

#2.
    if 判断式 
    then
        语句块1
    else
        语句块2
    fi

#3.
    if 判断式
    then
        语句块 
    elif 判断式
    then
        语句块 
    .........
    else
        语句块 
    fi

#4.
    if 判断式
    then
        if 判断式
        then
            if 判断式
            then
                ...
                语句块
            else
                语句块
            fi
        else
            语句块 
        fi
    else
        语句块 
    fi 
case 控制语句
#表达式和path匹配则执行相应的语句
#都不匹配则执行 *)下的语句
case 表达式 in
        path1)
            shell语句
            ;;
        path2)
            shell语句
            ;;
        *)
            shell语句
            ;;
esac
一些语法 shell中的判断式
#1. (test 前后需要空格)
 test 表达式 
eg:
	if test $var -gt $var1

#2. '['和']' 前后需要空格
 [ 表达式 ]   
eg:
	if [ $var -le $var1 ]
整数判断
-eq     等于        # equivalent	 (英语小白,用于记忆,不对请指正,谢谢)
-ne     不等于      # not equal
-gt     大于        # greater than
-lt     小于        # less than
-ge     大于等于    # greater、equivalent
-le     小于等于    # less、equivalent

eg.
	if 6 -lt 9
	then
	语句块
	fi
字符串判断
if test -z "$str"
  then
fi
-z  判断字符串为空,空为真       # zero
-n  判断字符串非空,非空为真     # not zero
=   判断字符串相等
!=  判断字符串不相等
>  判断字符串大于
<  判断字符串小于
逻辑运算
&&      -a      and
||      -o      or
!       !       !

C语言条件运算(三目运算)在shell中可以使用逻辑运算的短路法则来实现:
	[ $var -eq 2 ] && echo "1" || echo "0"
文件判断
if test -e filename

-e  判断文件是否存在                   # exist
-s  判断文件是否存在,文件长度大零返真  # size
-f  判断文件是否存在,是否为普通文件    # file
-d  判断文件是否存在,是否为目录文件    # directory 
-p  判断文件是否存在,是否为管道文件    # pipe
	#	创建管道文件 mkfifo filename
-c  判断文件是否存在,是否为字符设备    # character
-b  判断文件是否存在,是否为块设备文件  # block
-L  判断文件是否存在,是否为链接文件    # Link
-S  判断文件是否存在,是否为套接字文件  # Socket
文件权限判断
if test -w filename

-w 可写
-r 可读
-x 可执行
文件时间戳判断
if test file1 -nt file2 

-nt     判断文件的时间更新    # newer time    
-ot     判断文件的时间更旧    # older time
-ef     判断inode是否一样     # equal file
循环语句 while循环
while 表达式     	#表达式为逻辑值:true false,或者判断式
do 
    shell循环体
done
for循环
#1.
for((i = 0; i < 101; i++))
do
    循环体;
done

#2.常规写法
for 变量 in 单词列表
do
    循环体
done
#注:
	#单词列表可以为:
	#① 散乱的单词 a b c ac ab cd
	#② 连续的数据 {1..100} ,表示1-100
	#③ 将 命令置换 的结果作为 单词列表
Shell函数
一般形式
        function 函数名(){
            函数体
        }
# function 为函数固定的标志
# shell 函数没有形参
# shell 函数内部的变量一般为全局变量
# 在变量前面加上 local 就是局部变量

shell函数的调用:
        函数名
       	#或者
        函数名 argv[0] argv[1] ......   #命令行参数 
        
$? 可以接收到函数的返回值(0-255)
Shell脚本调用
bash 脚本名
./脚本名
source 脚本名
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号