• Shell脚本编程基础之shell脚本命令执行顺序


    命令执行顺序

    就是指命令执行的优先级,就像四则运算的优先级

    bash shell运行命令本来是从左往右依次执行,但期间会遇到种种潜规则

    • 把命令查分成单个的命令单词
      shell先把拿到手的命令行拆分成一段一段的单词

    • 展开别名

    突然遇到了一个别名,就去查找alias指向哪里?找到了把对应的内容拿进来摆好

    • 展开大括号{}的声明

    继续往下看,突然遇到了大括号声明{},里边可能是通配符、代码块之类的鬼东西,计算出结果,摆好

    • 展开波浪符的声明 ~

    继续往下看,突然又遇到了倒霉的波浪符~,转换为家目录的路径,摆好

    • 使用命令替换$()和反向单引号` `

    继续往下看,突然又遇到了装着其他命令的$()和反向单引号,把其中的命令先执行了,计算出结果,摆好

    • 再次拆分命令行为命令词

    再把所有该拆的都拆散,重新摆好

    • 展开文件通配符 *,?,[]等

    继续往下看,突然又遇到了MMP的的通配符,拿张草纸一顿查,把找到的结果,摆好

    • 准备I/O重定向 <,>

    以为结束了?怎么可能,最后还遇到倒霉的重定向,

    先看看输入重定向送进来什么东西,插到里边摆好,

    再看看输出重定向要求送到哪里去,填个快递单先,

    后边是不是还有管道,先打个电话和管道那边沟通一下。

    • 运行命令

    终于的终于,要把所有摆好的东东,通过最强大脑,开整!

    脚本中不能使用别名

    命令里可以执行,脚本里不能使用别名

    需要使用原始的命令

    如需要使用别名的功能,需要加参数啊!

    防止扩展

    转义

    • 使用反斜杠转义,只显示本身的含义

    单引号 ' '

    • ' ' 单引号中的内容,只显示本身的含义

    双引号 " "

    • " " 双引号中变量$可以被识别,但命令只能作为字符显示
    * * * 胖并快乐着的死肥宅 * * *
  • 相关阅读:
    Navicat Premium 最新激活码 12 免安装(不用注册码,不用注册机)
    Vs Code 2019软件安装教程及常用的入门设置
    (WinForm)FormBorderStyle属性
    背包的题后总结。
    123
    网络最大流——最高标号预流推进
    厉害的网站
    一般图最大匹配——带花树
    四边形不等式
    你好,OI
  • 原文地址:https://www.cnblogs.com/bpzblog/p/14522780.html
Copyright © 2020-2023  润新知