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就将会等待其返回信息以及返回值
  • 相关阅读:
    深度学习面试题27:非对称卷积(Asymmetric Convolutions)
    深度学习面试题26:GoogLeNet(Inception V2)
    深度学习面试题25:分离卷积(separable卷积)
    深度学习面试题24:在每个深度上分别卷积(depthwise卷积)
    深度学习面试题23:批次张量和卷积核的简易定义方式
    深度学习面试题22:批量归一化在实践中的应用
    深度学习面试题21:批量归一化(Batch Normalization,BN)
    Docker安装ElasticSearch 版本7.1.1
    Go语言入门——hello world
    eclipse下配置GO语言的开发环境
  • 原文地址:https://www.cnblogs.com/sunyuw/p/4224394.html
Copyright © 2011-2022 走看看