zoukankan      html  css  js  c++  java
  • 构建基本脚本(转)*****好文章*****

    10.1 使用多个命令

    如果两个命令一起使用,可在同一提示符行输入它们,用分号隔开

    10.2 创建shell脚本文件

    • shell脚本第一行格式:#!/bin/bash
      • 通常shell脚本里,用#来注释行
      • shell脚本的第一行是一个例外,#后!号告诉shell用哪个shell来运行脚本
    • 在指定了shell之后,可在文件的每行输入命令,后加一个回车
      • 如有需要,可用分号来在一行输入你要用的两个命令
      • 在shell脚本中,你可以在不同行来列出命令,shell会根据命令在文件中出现的顺序来处理命令
    • 要让shell找到自己编写的脚本并顺利运行,则需要采取以下措施
      • 将shell脚本文件所处的目录添加到PATH环境变量中
      • 在提示符中用绝对路径或相对文件路径来引用shell脚本
      • 修改自己编写的shell脚本权限为可执行:chmod u+x mytestshell

    10.3 显示消息

    • echo 命令
      • 作用:显示一个简单的文本字符串
      • 默认情况:不需要使用引号将要显示的文本圈起来
      • 对于要显示单双引号问题:在字符串中使用到了他们,在文本中使用其中一种引号,而用另外一种将字符串圈起来
      • 参数 -n:在同一行显示一个文本字符串作为命令输出(即echo的内容+命令输出在同一行)

    10.4 使用变量

    10.4.1 环境变量

    • set命令:显示完整的活动的环境变量列表
    • 在环境变量名称之前加个美元符($)来在脚本中使用这些环境变量
      • 在双引号中使用环境变量shell依然能够识别,只要脚本在引号中看到美元符,就会认为在引用一个变量
      • 如果在前面加上反斜线“”(如需使用$)

    10.4.2 用户变量

    • 除了环境变量,shell脚本还允许在脚本中定义和使用自己的变量
    • 定义变量允许临时存储数据并在整个脚本中使用,从而使shell脚本看起来跟向计算机程序
    • 用户变量
      • 格式:不超过20个字母、数字或下划线的文本字符串,区分大小写
      • 赋值形式:值通过等号赋给用户变量,在变量、等号和值之间不能出现空格
      • shell脚本会自动决定变量值的数据类型,变量的生命周期一直到shell脚本结束

    10.4.3 反引号(重要)

    • 作用:将shell命令的输出赋给变量
    • 使用:必须使用反引号把整个命令行命令圈起来
    • 例子:在脚本中通过反引号获得当前日期并用它来生成为唯一文件名
      • today被赋予格式化后的date命令的输出,这是用来为日志文件名抓取日期信息常用的一种技术
      • %y%m%d:date命令将日期显示为两位数的年、月、日的组合,如110131

    10.5 重定向输入和输出(重要)

    10.5.1 输出重定向

    • 重定向最基本的类型是将命令的输出发到一个文件中,用“>“命令来完成:command > outputfile
    • > 与 >>区别:前者直接覆盖已有的文件内容,后者则是追加到文件末尾

    10.5.2 输入重定向

    • 输入重定向将文件的内容重定向到命令,用”<”来完成:command < inputfile
    • wc命令重定向例子:
      • wc命令提供了对数据文本的计数,默认情况会输出3个值
        • 文本的行数
        • 文本的词数
        • 文本的字节数
    • 内联重定向
      • 作用:允许在命令行而不是在文件指定输入重定向的数据
      • 符号:<<
      • 格式:内联重定向符号<<加上指定一个文本标志来划分要输入数据的开始和结尾
      • 在命令行使用内敛输入重定向时,shell会使用PS2环境变量中定义的次提示符来提示输入数据

    10.6 管道(重要)

    • 管道最流行的用法是将命令产生的长输出结果通过管道传送给more命令
      • ls -l命令产生一个目录中所有文件的长列表,对于大量文件的目录来说,这个列表会很长,通过管道连接到more命令,可以强制输出在每屏数据的末尾停下来

    10.7 执行数学运算

    10.7.1 expr命令

    • expr命令允许在命令行上处理数学表达式
    • 许多expr命令操作符在shell中有其他意思(比如星号*)
      • 解决方法:用转义字符来识别容易被shell错误解释的任意字符
      • 在shell脚本中,要将数学运算结果赋给一个变量,需要使用反引号

    10.7.2 使用方括号

    • 在bash中,再讲一个数学运算结果赋给某个变量时,可以使用“[]([ operation ])将数学表达式圈起来,并且shell不会误解称号*和其他符号
    • bash shell 只支持整数运算

    10.7.3 浮点解决方案

    • bc的基本用法
      • 允许在命令行输入表达式、解释表达式、计算并返回结果的一种编程语言
      • bash计算器能够识别
        • 数字(整数和浮点数)
        • 变量(简单变量和数组)
        • 注释(以井号开始的行或C语言中的/**/对)
        • 表达式
        • 编程语言(例如if-then语句)
        • 函数
    • 在shell提示如下通过bc命令访问bash计算器
      • 输入quit退出bash计算器
    • 浮点运算是由一个内建的称为scale的变量控制的,并须将这个值设置为结果里你想要的小数后的位数
      • 参数-q:会将bash计算器输出的很长的欢迎条屏蔽掉
    • 在脚本中使用bc
      • 基本格式:variable=echo "options: expression" | bc
        • options:允许你来设置变量,如果设置的变量不止一个,可以用分号来分开它们
        • expression:定义了通过bc执行的数学表达式
    • bc与内联输入重定向
      • 在bash计算器中创建的变量只在bash计算其中有效,不能在shell脚本中使用

    10.8 退出脚本(重要)

    10.8.1 查看退出状态码

    • ?退使用?变量
    • linux常用退出状态码
      • 0:命令成功结束
      • 1:在命令中发生了未知的错误
      • 126:用户没有执行命令的权限
      • 127:命令不可执行

    10.8.2 exit命令

    • 默认情况下,shell脚本会由脚本中最后一个命令的退出码退出
    • exit命令:在脚本结束时指定一个退出状态码
    • 退出码最大值为255,区间为0~255,shell通过模运算得到这个结果
      • 模运算:一个数的模运算就是被除后的余数,300的余数是44

    退出码很有用,可以判断您的命令是否正常执行。

  • 相关阅读:
    Web容器中DefaultServlet详解
    MySQL笔记(四)DDL与DML风格参考
    MySQL笔记(三)由txt文件导入数据
    MySQL Crash Course #21# Chapter 29.30. Database Maintenance & Improving Performance
    MySQL Crash Course #20# Chapter 28. Managing Security
    Linux笔记 #07# 搭建机器学习环境
    Google's Machine Learning Crash Course #03# Reducing Loss
    MySQL Crash Course #19# Chapter 27. Globalization and Localization
    MySQL Crash Course #18# Chapter 26. Managing Transaction Processing
    MySQL Crash Course #17# Chapter 25. 触发器(Trigger)
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/5804753.html
Copyright © 2011-2022 走看看