zoukankan      html  css  js  c++  java
  • Shell代码

    shell语法

    如果输入不是注释的话,shell将会对输入的内容进行分解和解析,最终分解为可以处理并返回值的命令和结构。当分解完成就会调用fork和exec来执行,执行的情景有如下几种

    1. 从文件或者字符串或者用户输入
    2. Input is broken up into words and operators, obeying the quoting rules,这句看了半天,愣是没看懂。。。。。。
    3. shell解析出的简单的或者复杂的命令
    4. Bash执行严格的Shell命令,将命令打散成为命令和参数和文件的list
    5. 重定向被从命令中剔除出来,如果有必要的话就会执行。
    6. 命令已经被执行
    7. 可选的,shell会等待命令执行完毕获取其返回值

    shell命令是由命令本身和参数组成由空格分割,例如 touch file1 file2 file3。多个简单命令可以用管道分隔,在循环或者条件判断或者其他组织形式中使得一个命令的输出成为另一个命令的输入。

    比如

    ls | more
    gunzip abc.tar.zip | tar -zxf

    shell函数

    shell函数是一种代码组织的形式,一次组织多次调用。这个我们后文会提到

    shell参数

    参数可以是一个名字,但是变量则是值,必须用内建命令 declare来新建,如果没有赋值则默认未null。要删除变量只能通过内建的unset来删除。

    如何使用变量和参数,我们后文再谈

    Shell扩展

    好吧,这个比较冗杂,之后再说

    重定向

    在一个命令被执行之前,命令的输入或者输出会被解析出来,然后你懂得。

    执行命令

    命令执行的时候,赋值语句和重定向被保存以备后用。其他部分被展开,第一个名词被用来当作命令的名字,剩下的被当作参数,然后重定向起效。

    一个shell命令的执行将会有如下的行为:

    1. 检查命令中是否含有,如果没有则检查是否存在正在查找的函数。
    2. 如果不包含正在查找的函数,则检查是否是内建函数列表中的命令
    3. 如果不是正在查找的函数也不是内建函数列表中的命令,就到PATH中取寻找匹配的命令。shell利用hash table来缓存了path中的命令,所以不会存在遍历文件夹的情况。
    4. 如果查找还是失败则会返回127并打印错误信息
    5. 如果查找到或者上述查找成功,命令就将会被在一个隔离的环境中执行。
    6. 如果执行失败是因为文件不可以执行并且文件也不是一个文件夹,就认为这个文件是一个shell脚本
    7. 如果命令不是异步执行的,shell就将会等待其返回信息以及返回值
  • 相关阅读:
    RT-Thread can
    scons自动化构建工具
    Android 数据库 SQLiteOpenHelper
    请确保二进制储存在指定的路径中,或者调试他以检查该二进制或相关的DLL文件
    攻防世界misc新手区前三题
    基于session对象实现简单的购物车应用
    MS Excel中的内部日期处理方法
    如何实现对指定日期进行增减日期操作结果的输出
    2020前端大厂最新面试题,这一波我是用“身子换来的”
    字节、拼多多前端面经!
  • 原文地址:https://www.cnblogs.com/sunyuw/p/4224394.html
Copyright © 2011-2022 走看看