zoukankan      html  css  js  c++  java
  • Shell 编程核心技术《一》

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。
     

    在我们的日常工作中经常需要编写一些 Shell 逻辑脚本来批量处理一些任务,比如读取输入数据进行相关处理,将任务放入一个脚本进行自动化运行等场景,这些都涉及 Shell 编程,其实 Shell 编程也非常简单,就像 Java、Python 这些大众化的编程语言一样,也具备编程语言的特性,我们来看下 Shell 编程主要涉及的几个方面的内容。

    • 变量
    • 逻辑控制
    • Shell 环境
    • 脚本应用
    • 自动化

    变量

    1、变量定义

    学习一门编程技术,首先需要掌握如何使用变量,在 Shell 中定义一个变量非常简单,它与在 Python 中定义一个变量非常相似,你可以在任意位置定义一个变量并给它赋值,而 Shell 比 Python 更简洁的地方在于不强制输入单引号或双引号去指明内容。

     如上图所示,定义一个 x=1 的变量,然后输入 echo $x 指令,其中 $x 表示可以引用这个变量。

     如上图所示,输入 hello 字符串赋值给变量 x,然后再打印 echo $x。

     如果输入 x=hello world ,这时系统运行会报错,因为 x=hello 会被认为是一个变量赋值,而 world 会被认为是另外一个独立的命令。

     对于变量值中有空格时,我们只需要对字符串加上单引号或双引号。然后再打印这个变量 echo $x 就可以了。

    在变量的定义中,有几点需要我们注意:

    • 等号(=) 左右不要有空格;
    • 如果内容有空格,需要使用单引号或双引号;
    • 双引号支持转义符,$ 开头的变量会被自动替换。
    • 在变量的使用中还有几个方法需要注意,echo $a、echo “$a” 都可以表示变量输出,但如果你想使用中更严谨建议使用双引号,还有就是多个字符串串联使用时,使用 {} 对内容括起来表示该内容是变量,避免与后面的其他字符混淆导致报错。

    2、预定义变量 

    在 Shell 编程中,系统还提供了几个预定义变量。比如:

    • PWD 表示当前目录;
    • USER 表示当前用户;
    • HOME 表示当前用户的主目录,HOME 还可以用 ~ 简写;
    • PATH 表示当前所有可执行程序;
    • RANDOM 可以产生一个随机数。

     其中,我们需要特别注意 PATH 变量,比如输入 echo $PATH 指令,你可以看到 PATH 变量定义了所有可执行程序,定义在 PATH 中的程序可以直接调用程序名执行而不必再输入程序的全部路径。

    比如使用 which ls 指令,你会发现 ls 在 /bin/ls 目录下,打印 echo $PATH 变量,你会发现里面有对应的 /bin 目录,但如果程序没有定义在 PATH 变量中,就需要你输入全部路径来执行程序 。

    3、特殊符号的使用

    除了这些之外,还需要掌握一些特殊的符号,例如:

    • 双引号用于括起一段字符串,支持 $var 形式的变量替换;
    • 单引号也表示其内容是字符串,但不支持转义;
    • $’ ’ 表示 ANSI-C 引用;
    • 反斜线,某些情况下表示转义;
    • ((a=a+3)) 是整数扩展,双括号里面的变量作为整数处理;
    • $(ls) 执行命令并把结果保存为变量,简写为``;
    • {1..10} 等价于 seq 1 10,表示 1~10 数字;
    • seq 1 3 10 表示生成一个步进为 3 的 1~10 的数字。

    其中,需要重点介绍整数扩展,你可以把数学表达式放到双括号中进行相应的计算,

    比如输入 echo $((100000/3)),它的计算结果是 33333,这里为什么没有小数位呢?

    是因为 Shell 中目前仅处理整数,如果你需要精确到小数位可以使用 awk 指令。Shell的整数计算不使用 $ 也是可以的,但如果你想引用具体的结果值,就需要使用 $。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    【算法笔记】B1007 素数对猜想
    【算法笔记】B1006 换个格式输出整数
    【算法笔记】B1005 继续(3n+1)猜想+sort()用法
    【算法笔记】B1004 成绩排名
    【算法笔记】B1003 我要通过!
    【算法笔记】B1002 写出这个数
    【算法笔记】B1001 害死人不偿命的(3n+1)猜想
    JZOJ 3233. 照片
    JZOJ 1243. TreeCount
    JZOJ 1241. Number
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/13330262.html
Copyright © 2011-2022 走看看