C高级(学习)2024.7.31

目录

shell脚本

概念

创建和执行

变量

用户自定义变量

位置变量

预定义变量

功能语句

说明性语句

功能性语句

1.read

2.expr

3.let

4.test

1.字符串测试

2.整数的测试

3.文件属性测试

结构性语句

if语句

1.基本结构  

2.分层结构

3.嵌套结构

case语句

for循环

while

循环控制语句

shell脚本

概念

shell的使用方式:手动命令和脚本

shell脚本的本质:shell命令的有序集合,扩展名可以为.sh,也可以没有

shell不仅是一个应用程序还是一种脚本语言

        1)编译型语言:c  ,java  ,c++ ,当中间出错,err直接结束,修改重新编译运行

        2)解释型语言:shell  python,不需要编译直接执行,当中间出粗偶,智慧在错误的地方报错,但是不会影响后面的内容;解析一条指令,执行一条指令

创建和执行

创建shell脚本:touch   test.sh

第一行写:#!/bin/bash

        解释:        使用/bin/bash来解释执行

变量

用户自定义变量

一般用大写,进行赋值时用=,左右两边不能有空格
引用变量前面加$

位置变量

$0        与输入的命令行一样,包含运行的脚本的名字  xx.sh
$1 , $2 .... $9         分别包含第一个到第九个命令行参数
$#        命令行参数的个数,不包含脚本文件
$@        所有命令行参数
$*        所有命令行参数

预定义变量

$?前一个命令的退出状态(0为真,非零为假)
$$正在运行进程的ID号

功能语句

说明性语句

        以#开头
        注释用#

功能性语句

1.read

功能:read从标准输入读入一行,并赋值给后面的变量
格式: read  VAR1 VAR2 VAR3
读入行的第一个单词赋值给var1  ,第二个单词赋值给var2,..其余所有都赋值给最后一个变量
read  -p "提示语句" 变量名 : 可以将提示语句输出,同时输入变量

2.expr

格式:expr   表达式
算术运算符命令expr主要用于简单的整数运算, 加(+),减(-)乘( \*)  除 (/)取余  (%)

注意:

(1)表达式符号之间必须用空格间隔
(2)expr引用变量必须$
(3)expr自带打印功能
(4)使用乘号\* 小括号\(  \)   需要转义
(5)把expr的结果赋值给变量需要命令置换符
(6)expr不能进行++  -- 操作

3.let

格式:let  表达式

(1)运算的时候运算符左右两边不能有空格
(2)不能自己打印,输出需要用echo
(3)let语句可以不加$引用变量
(4)let n=n**2 表示平方
(5)5.可以++ -- ,()转义,*不转义

4.test

可以测试三种对象:字符串   整数   文件属性

1.字符串测试

s1 = s2 测试两个字符串是否完全一样
s1 != s2 测试两个字符串是否有差异
-z    s1        测试s1长度是否为0
-n     s1        测试s1长度是否不为0

2.整数的测试

$a -eq $b       测试a与b是否相等     equal
$a -ne $b   测试a与b是否不相等   not  equal
$a -gt  $b   测试a是否大于b   greater than
$a -ge $b     测试a是否大于等于b 
$a -lt  $b     测试a是否小于b     less than
$a -le  $b   测试a是否小于等于b

3.文件属性测试

测试name   是否为一个目录         -d  name
测试name   是否为一个普通文件    -f    name
测试name   是否存在                -e  name

结构性语句

if语句

1.基本结构  

if    判断条件
then
        命令表1
else
        命令表2   

fi

2.分层结构

if   判断条件1
then
         命令表1
elif    条件2
then 
         命令表2
else
         命令表3
fi

3.嵌套结构

if    条件
then
        if    条件
        then
                命令表1
        else
                命令表2
        fi
else
        命令表2
fi

注意:
        if  和 fi是条件语句的括号,必须成对使用
        命令表中的命令可以一条也可以多条

case语句

case  变量  in
模式1)
        命令表1
        ;;
模式2)
        命令表2
        ;;

...
*)
        命令表n
            ;;
esac

注意:
    1)case语句只能检测字符串变量
    2)命令表以单独的;;结束,退出case语句
    3)模式n通常写为*,表示其他所有的模式
    4)case匹配项中可以存在多个模式,每种模式之间|隔开

for循环

for  变量名     in   单词表
do
        命令表
done

        变量依次从单词表中读取各个单词,每取一次单词,就执行一次循环体中的命令表,循环次数由单词表中的单词数决定,命令表中的命令可以一条,也可以是由分号或换行符分隔开的多条。

for语句书写格式:

for  i  in   1 2 3 4 5  
do  

        ...
done
变量i从单词表中取值

for   i   
do  
        ...
done
变量i从命令行取值,可以省略in   单词表

for   i   in  {1..10}  
do 
        ... 
done
变量i从1-10取值

for ((i=0;i<10;i++))
do
        ...
done
书写格式类似于c语言

while

while  命令或表达式
do
        命令表
done

        while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。

循环控制语句

break n        结束n层循环

continue n        结束n层本次循环,继续外层循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值