编程原理:
1、编程介绍
 早期编程:
  驱动 硬件默认是不能使用的;
   不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行“翻译”;
  更趋近与硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家所限制;C C++ 的底层就是汇编语言;
 现在编程:
  基于高级语言,以及超高级语言,更好的让程序员能够的实现编程功能;
 编程语言的分类:
  高级语言、超高级语言需要*翻译*成计算机可读的语言(二进制指令)
  解释型 --  逐行翻译,逐行执行  shell python JAVA
   bash -x filename.sh
  编译型 --  一次编译,全部执行  C语言 C++  C# JAVA
  
  程序 = 指令 + 数据
  面向对象 -- 侧重于数据的编程语言
  面向过程 -- 侧重于指令
 编程语言的执行方式:
  【一行一行】
  1、顺序执行
  2、循环执行 -- *for(遍历)* while(循环条件) until(和while相反)
  3、选择执行--分支 if *case*
  
2、shell脚本语言介绍
 优点:调用os(操作系统)的命令行,来实现所有功能;
 缺点:没有库调用(区分Python)
 shell脚本包括:1、*命令*(非常重要) 2、变量(全局变量、局部变量、本地变量、传参) 3、逻辑关系
 
 shell的第一句话!!!(必须写)
 #!/bin/bash  --  定义脚本解释器 (普遍认为#为注释行,这里特殊)shebang
 #!/usr/bin/python
 /etc/shells   --  查看当前系统支持的shell程序
 echo $SHELL  --   查当前会话的shell程序
 /etc/passwd  --  制定了用户默认支持的shell程序(/sbin/nologin)
 shell 的执行:
  1、bash命令来执行脚本
   -n  查看shell脚本的逻辑错误(注意:单词写错可不管)
   -x  逐行显示执行的脚本程序(方便拍错)
  2、授权 chmod u+x  filename.sh
   使用全路径执行脚本,即可
3、变量
 环境变量
 局部变量  declare 命令 -- 定义变量类型
 本地变量  local 在函数中使用
 变量类型:
  数值型:
   1、整形  int
   2、浮点型  float
   3、布尔值  0 1 (真 假) (True False)
  字符串:
   1、普通字符及字符串
   2、数组
  编程语言的分类:
   强类型语言  --  数值必须被定义,才能进行处理或运算
   弱类型语言  --  编程语言可以自动识别变量类型
   【*多态* 一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】
 传参
  $?  --  上一条命令的执行状态 0 正确 1-255 错误
  $1  $2 ... ${10}  --  命令后面传入脚本的数据,以空格为分隔符
  $# --  统计传参数量   ${$#}  ?
  $* --  表示所有的传参,所有的传参以字符串形式进行输出
  $@ -- 表示所有传参,将所有的传参以列表的形式进行输出
  【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】
 定义变量格式:
  NAME=VALUE  (一个等号叫赋值,两个等号叫判断)
  我们通过命令declare 定义变量类型
  declare -i 整数   int()  str()
  declare -a 数组
 变量命令:
  1、下划线的方式指定变量名称
  2、驼峰命名方式
4、test文件测试、条件判断
 在脚本中,我们需要进行 语句分支; 说白了,就要做判断
 判断就是使用test命令来实现;
 使用格式:
  1、test [option] file
  2、[ 条件语句 ]
  【什么时候加 [  ] 什么时候不加 [  ] ?】
 常见的test选项:
  比较选项:
   -eq 等于
   -ne 不等于
   -gt 大于
   -ge 大于等于
   -lt 小于
   -le 小于等于
  判断选项:
   -f 判断是否为普通文件
   -d 判断是否为目录文件
   -L  判断是否为连接文件
   -r -w -x  判断文件是否具有 读 写 执行 权限
  关联选项:
   -o  或
   -a  与
   !    非
  字符串判断:
   =  判断两边的字符串是否相同
   !=  不等于
   -z  判断字符串是否存在
   -n  和 -z 相反,存在为假,不存在为真
5、逻辑运算
 与 &&   : 两边的命令,都为真,结果才是真
 或 ||       : 两边的命令,一边为真,就是真,同时为假,才是假
 非 !=
 这个逻辑运算符,前后对接的都是单独存在的命令;
 
 [ $? -eq 0 ] && exit 0 || exit 1
6、算术运算
 *let 1+1
  let a=1+1
  echo $a
 expr 1*1
  expr 1 * 10
 *$[$1+10]
  a=$[2+3]
  echo $a
 $(($1/$2))
  a=$((3/2))
  echo $a
 + - * / % **
 

学习shell的第三天的更多相关文章

  1. 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤

    编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时 ...

  2. bash shell学习-shell script基础 (笔记)

    A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux ...

  3. bash shell学习-shell基础 (笔记)

    When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时 ...

  4. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  5. 鸟哥的Linux私房菜——第十六章:学习Shell Scripts

    视频链接:http://www.bilibili.com/video/av10565321/ 1. 什么是 Shell Script       (shell写的脚本)1.1 干嘛学习 shell s ...

  6. (转)跟着老男孩一步步学习Shell高级编程实战

    原文:http://oldboy.blog.51cto.com/2561410/1264627/  跟着老男孩一步步学习Shell高级编程实战 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...

  7. 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)

    第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...

  8. 【shell】shell编程(三)-if,select,case语句

    通过前两篇文章,我们掌握了shell的一些基本写法和变量的使用,以及基本数据类型的运算.那么,本次就将要学习shell的结构化命令了,也就是我们其它编程语言中的条件选择语句及循环语句. 不过,在学习s ...

  9. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

随机推荐

  1. CentOS下安装libjpeg库及编译GD库

    GD库明明安装了,可处理图片的时候还是报错 Fatal error: Call to undefined function imagecreatefromjpeg() .PHP安装后,默认的gd库不支 ...

  2. python 通过序列索引迭代

    另外一种执行循环的遍历方式是通过索引,如下实例: #!/usr/bin/python # -*- coding: UTF-8 -*- fruits = ['banana', 'apple', 'man ...

  3. [python](Docker SDK)上传镜像到私有仓库(tls、身份认证)

    (Docker SDK)上传镜像到私有仓库(tls.身份认证) API:https://docker-py.readthedocs.io/en/stable/ 环境:python:3.7.3 配置参数 ...

  4. BZOJ 4004: [JLOI2015]装备购买 高斯消元解线性基

    BZOJ严重卡精,要加 $long$  $double$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ...

  5. js对象及初识面向对象(4)

    一.什么是对象? 对象是包含了属性和方法的集合体 二.什么是面向对象? 面向对象是一种编程思想,在JS当中利用原型来阐述这种思想的编程方法 三.构建对象: 1.内置对象: String   Math  ...

  6. 数据分析师面经一(bk)

    2019年第一个数据分析面试: 先说一下心理感受,在BOSS多次看到这个岗位了,但是 呢一直没勇气去投这个岗位.首先毕竟是一个知名企业一万+人的公司,心里多少底气不足(小公司待习惯了吧),而且看岗位要 ...

  7. $\LaTeX$数学公式大全12

    $12\ Font\ sizes$ ${\displaystyle \int f^{-1}(x-x_a)\,dx}$ {\displaystyle \int f^{-1}(x-x_a)\,dx} ${ ...

  8. BAT 鼎立格局被打破,2019 年这些互联网公司是程序员跳槽首选!

    点击上方“程序员江湖”,选择“置顶或者星标” 你关注的就是我关心的! ​ 作者:BOSS直聘 来源:BOSS直聘 作者:BOSS直聘(ID:bosszhipin),领先的移动互联网招聘APP,为求职者 ...

  9. TCP 之 TCP_NEW_SYN_RECV状态

    概述 以前的TCP请求控制块没有独立的状态,而是依赖于他们的父控制块的状态,也就是TCP_LISTEN状态,现在要把请求控制块加入到全局的ehash中,所以需要一个状态,而TCP_SYN_RECV状态 ...

  10. Mui 底部导航切换

    1.建好子模板目录 2.导航代码 <nav class="mui-bar mui-bar-tab"> <a id="defaultTab" c ...