Shell编程规范与变量

目录

一、Shell脚本概述

二、重定向

三、管道操作符号

四、shell脚本变量

五、自定义变量

六、从键盘输入内容为变量赋值

七、整数变量的运算

八、环境变量

九、只读变量

十、位置变量

十一、预定义变量

 

 

一、Shell脚本概述

1、shell脚本概述

  将要执行的命令按顺序保存到一个文本文件

  给该文件可执行权限

  可结合各种shell控制语句以完成更复杂的操作

2、shell脚本应用场景

  重复性操作

  交互性任务

  批量事务处理

  服务运行状态监控

  定时任务执行

 

 3、shell的作用

  shell:命令解释器,介于系统内核与用户之间,一种被称为解释性语言或者脚本语言的计算机语言。充当"翻译官"的作用;

  Linux系统中运行的一种特殊程序,用户登录Linux系统时,自动加载一个Shell程序;

  Linux系统中默认使用的Shell程序时bash,文件位于/bin/bash;

  不同shell的内部指令,运行环境会有区别

4、shell基本构成

  脚本申明(解释器):若第一行为“#!/bin/bash” ,表示此行一下的代码语句是通过/bin/bash程序来结实执行,#!/bin/bash为默认解释器,还有其他类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。

  注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时将不被执行。

  可执行语句:比如echo命令,用于输出“ ”之间的字符串。

5、shell脚本的执行

  5.1 指定路径的命令,要求文件必须有执行(x)权限

  5.2 指定shell来解释脚本,不要求文件必须有写(x)权限

 

 

 

 

 二、重定向

1、重定向——交互式硬件设备

 

 2、重定向——重定向操作(用于自动化脚本,输出查证)

 

 

 

 

 

 三、管道操作符号

  管道操作符号“|”,将左侧命令输出结果,作为右侧命令的处理对象

  命令行格式: cmd1 | cmd2 [……| cmdn]

四、shell脚本变量

1、变量的定义

  变量就是会变的量

  可以通过变量名得到变量值。在内存上开辟一个记录数据的空间,给它起个名字,如name,num 等,这些就是变量名。而存放在该空间的数据就是变量的值。

2、变量的格式

  变量名=变量值

3、变量名命名规则

  • 变量名必须是以字母或下划线开头,名字中间只能由字母,数字,下划线 "_" 组成,不能有小数点,特殊字符,空格,标点符号等;
  • 变量名的长度不得超过255 个字符;
  • 变量名在有效范围内必须是唯一的;
  • 变量名不能和系统命令,系统变量等冲突;
  • 变量名可以将开头字母打下,以防和系统命令等冲突。

4、查看变量名

  可以用echo $变量名,查看变量的值

 

5、变量作用范围

  默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。

  可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

  格式1:export 变量名

  格式2:export 变量名=变量值

  可以使用 pstree 命令查看Shell环境,输入 bash 命令进入子Shell环境,按Ctrl+D组合键或输入 exit 命令退出子Shell环境。

五、自定义变量

  格式:变量名=变量值

1、引号的使用

  1.1 双引号"":允许通过$符号引用其他变量值,不取消特殊符号的释义

 

   1.2 单引号'':禁止引用其他变量值,$视为普通字符,取消特殊符号的释义

 

   1.2 反撇号``:命令替换,提取命令执行后的输出结果,作用与$()相同

 

 六、从键盘输入内容为变量赋值

  1、格式:read [-p "提示信息"]变量名

      echo $"变量名"

 

   2、格式:echo -n "提示信息"

      read 变量名

      echo $变量名

 

 七、整数变量的运算

1、格式:expr 变量1 运算符 变量2 (运算符 变量3)

2、运算符:+加法、-减法、\*乘法、/除法、%取余

 

  常用的运算表达式:

  i=$(expr 10 \* 3)
  i=$((10 * 3))
  i=$[10 * 3]
  let i=10*3
  i++ 相当于 i=$[$i+1]
  i-- 相当于 i=$[$i-1]
  i+=2 相当于 i=$[$i+2]
八、环境变量

  使用 env 命令可以查看到当前工作环境下的环境变量

  变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,变量PATH表示可执行程序的默认搜索路径。

 九、只读变量

  用于变量值不允许被修改的情况

 十、位置变量

  当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

  $n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}。

 

 

 十一、预定义变量

  $*、$@:表示命令或脚本要处理的参数。
  $*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
  $@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立 的,代表"$1" "$2" "$3" "$4"。
  $0:表示当前执行的脚本或命令的名称。
  $#:表示命令或脚本要处理的参数的个数。
  $?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
 
 
 
  总结:shell脚本的编写一定要注意语法规范,一个符号或者一个空格错了都执行不了。

 

 

 

 

 

 

  

posted @ 2021-07-14 11:10  peiqy  阅读(56)  评论(0编辑  收藏  举报