• sh编程(第十章)


    相关链接

    程序设计语言

    程序设计语言的种类千差万别。但是,一般说来,基本成分不外4种。

    • 数据成分。用以描述程序中所涉及的数据。
    • 运算成分。用以描述程序中所包含的运算。
    • 控制成分。用以表达程序中的控制构造。
    • 传输成分。用以表达程序中数据的传输。

    具体来说:

    1. 数据类型(描述了数据在内存存储区中占据的空间大小)
    2. 常量
    3. 变量
    4. 运算符(+ - * / ** ^ | & ! ++ ?: 增强运算符等)
    5. 表达式(一般有赋值、算术、逻辑、条件、强制类型转换等类型)
    6. 标识符(常量名、变量名、函数名、类名等。)
    7. 关键字(具有特定含义的标识符,不能用来作变更名、函数名等)
    8. 基本控制结构(顺序结构、选择结构、循环结构)
    9. 函数
    10. 面向对象程序语言需实现封装、继承和多态

    shell脚本

    在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它接收用户命令,然后调用相应的应用程序。

    Shell Script ,即Shell脚本,就是把原本需要在命令行输入的命令组成预先放入到一个文件中,方便一次性执行。很多脚本语言实际上已经超过简单的用户命令序列的指令,还可以编写更复杂的程序。

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(shell脚本语言)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

    脚本语言 -> 解释器 -> 解释执行

    编译语言 -> 编译器 -> 编译链接

    知识点归纳

    sh脚本与C

    • sh
      • 是解释程序,逐行读取脚本并直接执行。若不是可执行内置命令,则会复刻一个子程序来执行。
      • 只有字符串类型
      • 第一个可执行语句是程序的入口
    • C
      • 必须先链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件。
      • 有多种数据类型
      • 必须要有main函数

    如何编写sh

    • 命令行参数、内置变量、特殊字符

    • sh语句包括所有linux命令,以及I/O重定向

    • 命令

      • 内置命令

        • .file
        • break
        • cd
        • ……
      • Linux命令

        • echo
        • expr
        • awk
        • ……
      • 控制语句

        • if-else-fi
        • for
        • while
        • until-do
        • case
        • continue/break
      • 重定向

      • 嵌入文档

      • sh函数:必须要任何可执行语句之前定义sh脚本中的所有函数

      • 通配符:最有用的通配符是*,可扩展到当前目录中的所有文件

    问题与解决思路

    下面这段程序的return 语句为什么写两对括号?

      1 myadd(){
      2     echo "该函数计算两个数字的和"
      3     echo "请输入第一个数字"
      4     read a
      5     echo "请输入第二个数字"
      6     read b
      7     return $(($a+$b))
      8 }
      9 myadd
     10 echo "两个数字的和是$?"
    

    双小括号 (( )) 是一个运算,作用如下:
    + ((exp))结构,扩展并计算一个算术表达式的值。若是逻辑判断,表达式exp为真则为1,假则为0。
    + 只要括号中的运算符、表达式符合C语言运算规则,都可用在\(((exp))中。作不同进制运算时,输出结果全都自动转化成了十进制。 \+ 括号内支持多个表达式用逗号分开。比如可以直接使用for((i=0;i<5;i++)),if ((\)i<5))等

    shell中各种括号的作用

  • 相关阅读:
    Unity快速运行模式与减少编译等待时间
    神器 Trello Bug Tracker 使用介绍
    优化UGUI的ScrollRect
    Unity开源搜索引擎
    游戏技术分享网站 CEDEC
    帧同步技术总结
    Unity Text自动缩放文本
    系统知识坑洼之旅文件系统篇其一文件夹也是个文件?
    [代码修订版] Python 踩坑之旅进程篇其五打不开的文件
    [代码修订版] Python 踩坑之旅 [进程篇其四] 踩透 uid euid suid gid egid sgid的坑坑洼洼
  • 原文地址:https://www.cnblogs.com/kenneth2012/p/16704892.html
Copyright © 2020-2023  润新知