通过前面的学习,我们对于linux文件系统有了一定的了解,我们接下来会初步接触编程原理和尝试编写shell脚本来实现功能。

day05--编程原理和shell脚本初步认识

编程原理

  在早期编程中,因为要使不同厂家的硬件设备之间进行指令沟通,常常使用汇编语言来编写程序。而现在编程基于高级语言和超高级语言,翻译成计算机可读的二进制指令,增强程序可读性,使程序员更好的实现编程功能

  编程语言分为解释型和编译型,

      解释型的特点是:逐行翻译,逐行执行。 如shell python

      编译型的特点是:一次编译,全部执行。 如c语言 C++

shell脚本语言介绍

  shell脚本包括:1、命令2、变量3、逻辑关系

  shell中定义脚本编辑器#!/bin/bash,这一句代码是必写的

  使用bash命令来执行脚本

bash -n #查看shell脚本的逻辑错误
bash -x #逐行显示执行的脚本程序

  或者先为脚本授以执行权限chmod +x 脚本名,再使用./脚本名就可以执行脚本

变量

  环境变量 echo $PATH 显示环境变量

  局部变量 decclare 命令 定义变量类型

  本地变量 local 在函数中使用

传参

  $? -- 上一条命令的执行状态 0 正确 1-255 错误
  $1 $2 ... ${10} -- 命令后面传入脚本的数据,以空格为分隔符
  $# -- 统计传参数量 ${$#} ?
  $* -- 表示所有的传参,所有的传参以字符串形式进行输出
  $@ -- 表示所有传参,将所有的传参以列表的形式进行输出
  【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】

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 相反,存在为假,不存在为真

逻辑运算   

  与 && : 两边的命令,都为真,结果才是真
  或 || : 两边的命令,一边为真,就是真,同时为假,才是假
  非 !=

  这个逻辑运算符,前后对接的都是单独存在的命令;
    [ $? -eq 0 ] && exit 0 || exit 1

交互输入

  read 命令

    read命令同时可以定义多个变量值,而输入的内容默认以空格为分隔符,如果默认过多,最后所有的值都会被赋予给最后一个变量,如果默认值过少,多余的变量则为空值

    read常用参数

read -p 请输入一个目录
read -t 定义超时时间

linux100day(day5)--编程原理和shell脚本的更多相关文章

  1. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  2. HBase学习笔记之HBase原理和Shell使用

    HBase学习指南之HBase原理和Shell使用 参考资料: 1.https://www.cnblogs.com/nexiyi/p/hbase_shell.html,hbase shell

  3. shell编程基础(二): shell脚本语法之分支语句和循环语句

    一.分支语句 1.条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与 ...

  4. 【Shell脚本编程系列】Shell脚本开发的习惯和规范

    1.开头指定脚本解释器 #!/bin/sh或#!/bin/bash 2.开头加版本版权信息 #Date #Author #Mail #Function #Version 提示:可配置vim编辑文件时自 ...

  5. shell编程基础(四): shell脚本语法之函数及调试

    一.Shell脚本中的函数 和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表.例如: #! /bin/sh fun(){ echo "Function fun ...

  6. 第三部分shell编程3(shell脚本2)

    7. if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样if ...

  7. 第三部分shell编程3(shell脚本编写1)

    做监控和备份最多 1. shell脚本是什么它是一种脚本语言,并非编程语言可以使用一些逻辑判断.循环等语法可以自定义子函数是系统命令的集合shell脚本可以实现自动化运维,大大增加我们的工作效率 第一 ...

  8. 【原】Shell脚本-判断文件有无进而复制

    2016年7月5日某同学在群上求助要编一个判断文件或目录在某路径下有无进而有的就复制粘贴到另一路径下,无的则将代码中断(不往下执行命令)的脚本.逐一完善.模板如下(生产环境可用到路径环境变量) --- ...

  9. Linux-Shell编程之创建shell脚本并执行

    1.创建文件 touch myFirst.sh 2.编辑文件 vi myFirst.sh 点击键盘的字母 I 进行编辑,输入一下内容 #!/bin/bash # My First script ls ...

随机推荐

  1. mpvue实现微信小程序(欢迎踩坑)

    最近刚使用mpvue完成了微信小程序的开发,写点东西,做个记录. 首先依旧是两个传送门: 微信小程序文档:[https://developers.weixin.qq.com/miniprogram/d ...

  2. vue @import css

    @import '~@/assets/scss/helpers/_mixin'; 原理:CSS loader 会把把非根路径的url解释为相对路径, 加~前缀才会解释成模块路径.

  3. POJ 3784 Running Median (动态中位数)

    题目链接:http://poj.org/problem?id=3784 题目大意:依次输入n个数,每当输入奇数个数的时候,求出当前序列的中位数(排好序的中位数). 此题可用各种方法求解. 排序二叉树方 ...

  4. B1001. 害死人不偿命的(3n + 1)猜想

    题目描述 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n + 1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在19 ...

  5. JavaScript 复杂判断的更优雅写法借鉴

    前言: 我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得 ...

  6. C# 中获取路径

    string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名. string str2=Environm ...

  7. 为应用程序池 ''DefaultAppPool'' 提供服务的进程意外终止。进程 ID 是 ''xxx''问题的解决方法

    网上提供了很多办法,都未解决. 解决过程一波三折,依次用了下列方法: 1.解决办法 点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项, 选择其下的“I ...

  8. LLDB动态调试

  9. php面试专题---20、MySQL的安全性考点

    php面试专题---20.MySQL的安全性考点 一.总结 一句话总结: 还是得多看视频,教程看的浮光掠影,容易get不到重点:比如预处理防sql注入之前是挺熟,后面就忘记了,而且看文章get不到点 ...

  10. Qt5.1 静态编译

    下载Qt5.2.1的Qt-every 解压 cd qt-everywhere-opensource-src-5.1.1/  ./configure -prefix 安装目录 -release -sta ...