【Shell脚本】shell编程规范与变量

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【Shell脚本】shell编程规范与变量,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、shell脚本概述

1.1shell概念

  • 将要执行的命令按顺序保存到一个文本文件里
  • 给该文件可执行权限
  • 可结合各种shell控制语句以完成更复制的操作
    什么是shell
  • 什么是Shell?就是与内核沟通的界面、应用程序等等。比如你要播放音乐,你的计算机通过你在shell输入的打开音乐的命令,Shell在告诉操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是实际的工作者
  • She11(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个”命令解释器”的角色,负责接收用户输入的操作指令(命今) 并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

1.2Linux有哪些shell

  • 检查一下/etc/shells这个文件,里面就是Linux所包含的she11。
  • 最常用的就是bash、tcsh、csh、sh、nologin这些shel1。这些shel1都是依据Linux发展者的不同所创造出的不同版本
  • bash: 基准于GNU的框架下发展出的she11。
  • csh: 语法有点类似于c语言的she11。
  • tcsh: 整合了csh,提供更多的功能。
  • sh: 已经被bash所替换。
  • nologin: 奇怪的shell,这个shel1可以让用户无法登录主机
    在这里插入图片描述

1.3shell脚本的作用

  • 自动化运维
  • 批量化重复操作可以编写脚本结合计划任务自动周期运行
  • 减轻管理员的工作量
  • 提高处理文件的速度
  • 必变配置出错
  • Shell是一个面向字符串的编程语言,可以跟python之类的其他语言配合起来,比如某个复杂的功能使用一个python脚本来实现,然后在shell中调用这个脚本实现较复杂的功能:或者反过来,在python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。
    面向对象的语言
  • JAVA,PYTHON,C++,C#,GO
    面向过程的语言
  • C,shell
    强类型语言
  • JAVA,C,C++,C#,GO (编译型语言,执行前需要先编译,运行速度快)
    弱类型语言
  • PYTHON,Shell,PHP (不需要编译即可直接执行,常用于作脚本)

二、编写shell脚本的规范

2.1编写shell脚本的规范

  • 脚本申明,解释器若第一行为”!/bin/bash”]表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
  • 注释信息:以”#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
  • 可执行语句:比如echo命令,用于输出” “之间的字符串
    在这里插入图片描述

2.2运行shell脚本的两种方法

方法一:

  • 指定路径的命令,要求文件必须有x权限

在这里插入图片描述

方法二:

  • 指定shel1来解释脚本,不要求文件必须有x 权限
  • 用 bash/sh 程序指定脚本文件运行,不需要执行权限,脚本会在子shell环境中运行
  • 用 source/. 指定脚本文件运行,脚本会在当前shell环境中运行(会影响当前所在目录、变量的值 等因素)

在这里插入图片描述

三、重定向与管道操作

3.1交互式与硬件设备

  • 标准输入:从该设备接收用户输入的数据
  • 表示输出:提供该设备向用户输出的数据
  • 标准错误:通过该设备报告执行出差的信息
类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器

3.2重定向操作

类型 操作符 用途
重定向输入 < 从指定文件读取数据,而不是从键盘输入
重定向输出 > 将结果保存到指定文件(覆盖原有内容
重定向追加 >> 将结果追加到指定文件尾部
标准错误输入 2> 将错误信息保存到指定文件(覆盖原有内容)
标准错误追加 2>> 将错误信息追加到指定文件中
混合输出 & > 将标准输入,标准错误的内容保存到同一个文件中
混合输出 2>&1 同上
混合追加 &>> 原理同上

重定向输入

  • 只能用于将文件里的内容给与命令执行,SELlinux会影响此命令执行
    在这里插入图片描述
    重定向输出与追加
    在这里插入图片描述
    标准输出错误
    在这里插入图片描述
    混合输出
    在这里插入图片描述

3.3管道符号 “|”

  • 将左侧的命令输出结果,作为右侧命令的处理对象
  • 需要执行对象的命令则需要通过xargs命令传输
    在这里插入图片描述

四、shell变量的作用、类型

变量的作用

  • 用来存放系统和用户需要使用的特定参数
  • 变量名: 试图固定名称,由系统预设或用户定义
  • 变量值:能够共享用户设置,系统环境的变化而变化

变量的类型

  • 自定义变量:由用户自己定义,修改和使用
  • 特殊变量:环境变量,只读变量,位置变量,预定义变量

4.1自定义变量

  • 变量名以字母或下划线开头,区分大小写,检验全大写变量名=变量值
  • 格式 :变量名=变量值
  • 查看变量值
  • 格式: echo $变量名
    在这里插入图片描述

4.1.1read -p

  • 从键盘输出获取赋值给变量
  • 在这里插入图片描述
    在这里插入图片描述

4.1.2赋值时使用引号

  • 双引号:允许通过$符号引用其它变量值
  • 单引号:禁止引用其它变量值,$视为普通字符
  • 反撇号:命令替换,提前命令执行后的输出结果
  • $() :用法与反撇号一致
    在这里插入图片描述

4.1.3全局变量设置export

  • 普通定义的变量,换一个bash环境就无效了,想要变量在全局有效则需要加export

定义全局变量的两种方法
name1=lisi
export name1
export name2=zhangsan

在这里插入图片描述

4.1.4整数变量的运算

expr

  • expr做乘法的时候需要在*前面加反撇号
    在这里插入图片描述
    echo $(()),echo $[ ]
    在这里插入图片描述
    let
  • 使用let定义一个变量,记录一个数值,用echo输出
    加、减、乘、除、余,与上方一致
    在这里插入图片描述
    ++与–
  • i++:将i定义的变量自增1,放在前面是输出i在自增
  • ++i : 先自增,在输出
  • –i,与 i – :与上方差不多加法变减法
  • 要加或者减去其它数则i+=2,i-=2,i*=2

在这里插入图片描述
在这里插入图片描述

4.2环境变量

  • 由系统提前创建,用来设置用户的各种环境
  • 配置文件:/etc/profile、~/.bash_profiel

4.2.1常见的环境变量

  • PWD:当前用户所在目录
  • PATH:系统命令搜索的路径
  • USER:当前登录用户
  • HOME:当前用户登录的家目录
  • SHELL:当前用户登录的SHELL环境
  • LANG :当前系统的语言和字符集编码
  • HISTSIZE:历史命令条目
  • env :可查看当前系统有哪些环境变量
    在这里插入图片描述

4.3只读变量

  • 用于变量值不允许修改的情况
    readonly,设置只读变量,不能被修改或删除

在这里插入图片描述
删除变量unset,不能删除只读变量
在这里插入图片描述

4.4位置变量

  • $1~$9:代表第一个到第九个位置变量,代表脚本后面跟的以空间相间隔的参数
  • ${10}:表示第十个参数,如果不加括号表示$1和0
  • $0:代表脚本本身
  • $#:代表脚本后面跟的以空间间隔的参数变量
  • $?:代表上一条执行的命令是否成功,命令执行成功返回0,非0值均代表执行异常
  • $* :不加双引号,代表结拜后面跟的以空格向间隔的所有参数;加上双引号后,会把脚本后面跟的以空格相隔的所有参数当作一个整体输出
  • $@ :不加双引号时,代表脚本后面跟的以空格相间隔的所有参数;加上双引号后,效果不变,仍然会把每个参数当作一个个体
    $0~$9的含义
    【Shell脚本】shell编程规范与变量

$# 与 $?

:
在这里插入图片描述
** $ * 与$ @**
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148413.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!