在shell中命令,不是单独存在的,可能需要多条命令结合使⽤ 将shell命令按照⼀定的逻辑顺序组织在⼀个⽂件中,组合成⼀些列完整的功能命令要求,执⾏⽂件,就把其中的命令按照定义的逻辑依次执⾏---这个shell⽂件就叫做shell脚本(写shell脚本就是shell编程)
     shell⽂件是以.sh作为后缀名
执⾏shell脚本(⽂件):
对shell⽂件添加执⾏权限,按照执⾏程序的⽅式执⾏
chmod u+x xxxx.sh
./xxxx.sh
使⽤对应的shell解析器来解析执⾏
bash xxxx.sh

shell语法

1. 变量定义
        变量=值
2. 引⽤变量
        $变量
3. 变量的输⼊
        read 变量名1 变量2 变量3 .....
        如果输⼊的数据超过变量的个数,则最后⼀个变量存储之后所有数据
4. 变量的输出
        echo $变量名1 $变量名2...
5. 引号的作⽤
        ""---表⽰字符串:会解析引号中的变量
        ''----表⽰字符串:不会解析引号中的变量
6. 位置变量
        $? :
        获取上⼀条命令的执⾏结果(执⾏的状态值),若上⼀条命令执⾏
        成功值$? = 0,如果不成功为⾮0
        $1:第⼀个参数
        $2:第⼆个参数
        $3:第三个参数
        ....
        $9:第九个参数
7. 条件判断
        条件判断:
        test
        字符串:
        s1 = s2-----判断相等
        s1 != s2-----判断不相等
        -z s1---------判断字符串⻓度是否为0
        -n s1--------判断字符串⻓度不为0

        整数:

                a -gt b------判断a是否⼤于b
                a -ge b------判断a是否⼤于或等于b
                a -lt b------判断a是否⼩于b
                a -le b------判断a是否⼩于或等于b
                a -eq b------判断a是否等于b
                a -ne b------判断a是否不等于b

        ⽂件测试:

                -d fi lename----判断⽂件是否是⼀个⽬录
                -e fi lename----判断⽂件是否存在
                -f filename----判断⽂件是否是普通⽂件
                -L fi lename----判断⽂件是否为符号链接⽂件
                -s fi lename----判断⽂件是否存在且⻓度不为0
                -r fi lename-----判断⽂件是否可读
                -w fi lename----判断⽂件是否可写
                -x fi lename-----判断⽂件是否可执⾏
                -c fi lename-----判断⽂件是否为字符设备⽂件

        逻辑运算:

                -a : and 逻辑与 多个条件都为真,结果为真
                -o :or 逻辑或 只要有⼀个条件为真,结果为真
                ! :not 逻辑⾮ 得到的结果与条件相反
9. 流程控制:

      (1) 选择结构:

 

 

        (2)循环结构          

                expr:算术指令
                expr $1 算术运算符 $2
while [ 条件表达式 ]-----满⾜条件表达式就执⾏循环,不满⾜就跳出
do
命令表
done
for 变量名 in 单词表-----如果变量能够从单词表中取出⼀个值进⾏
赋值,就循环执⾏⼀次
do
命令表
done
c语⾔for循环格式
for((循环起始语句;循环条件语句;每次执⾏循环后的改变条件的语
句))
do
命令表
done
10. 函数
        函数定义:
        函数名()
        {
        命令集合
        }
        function 函数名()
        {
        命令集合
        }
函数调⽤:执⾏函数功能
函数名
在函数中如果有参数,则只需要在函数调⽤时传递参数就⾏,在函数定义时
不⽤写
函数名 值1 值2 值3 ....
在函数的定义中,函数会默认存在位置变量,会⾃动使⽤位置变量来获取到
传递的值
函数返回值:
在函数体中,使⽤echo 输出要返回的内容
在调⽤时,如果没有⽤变量来进⾏存储赋值,则打印结果,但是如果使⽤变
量进⾏存储赋值(调⽤函数是使⽤ `
`来获取函数的执⾏结果)则不会打印,
叫做返回值存储到变量
如:a=`add 1 2`
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐