shell编程规范与变量

  • 一、shell脚本
    • 1.shell脚本概念:
    • 2.shell脚本用用场景
    • 3.Shell的作用
    • 4.编写脚本代码
      • 4.1编写脚本
      • 4.2赋予执行权限
      • 4.3 执行脚本文件
      • 4.4 更完善的脚本构成
  • 二、重定向与管道操作
    • 1. 重定向
    • 2. 管道符号
  • 三、变量
    • 1. 作用:
    • 2. 变量的类型
    • 3. 查看变量的值
    • 4. 赋值时使用引号等
    • 5. read 从键盘中获取变量的值
    • 6. echo 的常见用法
    • 7. 设置变量的作用范围
    • 8. 整数的运算(四种书写方式)
  • 四、特殊的Shell变量
    • 1.环境变量
    • 2. 只读变量
    • 3. 位置变量
    • 4. 预定义变量

一、shell脚本

是弱编程语言,用户和内存之间的翻译官,把用户输入的指令翻译成计算机识别的二进制语言

1.shell脚本概念:

  • 将要执行的命令按照顺序保存到一个文本文件
  • 给该文件可执行权限(wrx)X执行的权限
  • 可结合各种shell控制语句以完成更复杂的操作

2.shell脚本用用场景

  • 重复性操作:例如写个for循环,批量性任务
  • 交互性任务 :通过免交互性
  • 批量事务处理
  • 服务运行状态监控:例如监控磁盘空间,内存使用率,服务的状态等通过shell脚本定时监控巡检。(运维常用)
  • 定时任务执行

3.Shell的作用

命令解释器,内核和用户输入命令的解释器
linux 默认bin/bash

  • 用户登录shell

    • 登陆后默认使用的shell程序,很一般为/bin/bash环境。
    • 不同shell的内部指令、运行环境会有区别

4.编写脚本代码

4.1编写脚本

  • 使用vim编辑器
  • 每行linux命令按照从上往下的顺序读取

4.2赋予执行权限


4.3 执行脚本文件

方法一和二必须有执行权限才可以

  • 方法一:脚本文件路径(相对路径与绝对路径)
./ fir666.sh

  • 方法二:sh 脚本文件路径
sh fir666.sh


前两个方法不会真正执行,只会显示结果

  • 方法三: source或者直接用.
    会执行,会切换到/boot目录下
  source fir666.sh
. fir666.sh

4.4 更完善的脚本构成

  • 脚本声明
  • 注释信息
  • 可执行语句
    基本规范:
    第一行 #!表示使用哪个编译器(#!后没有空格,#!usr/bin 表示使用python解释器)
    第二行# 注释上此脚本干什么的

途中的echo用于提示自己命令执行到哪一步出错的,因为脚本在执行过程中,从上往下依次执行,并不知晓执行进度。

二、重定向与管道操作

1. 重定向

交互式硬件设备

  • 标准输入:从该设备接受用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息
类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误 /dev/stderr 2 显示器
类型 操作符 用途
重定向输入 < 从指定的文件读取数据,而不是从键盘输入
重定向输出 > 将输出结果保存到指定的文件(覆写原有内容)
同上 >> 将输出结果追加到指定的文件尾部
标准错误输出 2> 将错误信息保存到指定的文件(覆写原内容)
同上 2>> 将错误信息追加到指定的文件中
混合输出 &> 将标准输出、标准错误的内容保存到同一个文件中
同上 2>&1 将标准错误输出重定向到标准输出

重定向示例:

个人理解:操作符的尖角指向谁,就是往哪里输入数据

从pass.txt文件中取密码放入test66更改的密码中
“>>”:这个操作符和">"唯一区别就是。它是把结果追加到指定文件尾部的另起一行

2. 管道符号

将左侧的命令输出结果,作为右侧命令的处理对象


示例:
ps aux | wc -l       #统计系统进程的总量
cat /etc/passwd | grep sicong
echo "123456" | passwd --stdin sicong   #将用户sicong的密码改为123456


三、变量

1. 作用:

  • 用来 存放系统和用户需要使用的特定参数
    变量名:使用固定的名称,由系统预设和用户定义
    变量值:能够根据用户设置,系统环境的变换而变换

2. 变量的类型

  • 自定义变量:由用户自己定义,修改和使用

  • 特殊变量:环境变量,只读变量,位置变量,预定义变量

  • 定义一个新的变量
    变量名以字母或下划线开头,区分大小写,建议全大写
    变量名=变量值

3. 查看变量的值

echo $变量名

4. 赋值时使用引号等


双引号:允许通过$符号引用其他变量值单引号:禁止引用其他变量值,$视为普通字符反撇号:命令替换,提取命令执行后的输出结果,`...`和$(...)作用相同

双引号:引用变量值,记得把$也放在引号内


反撇号:把反撇号里面执行的结果值提取出来

5. read 从键盘中获取变量的值


read -p "提示信息" 变量名


read 基本都是写在脚本当中用来或许键盘输入的值

6. echo 的常见用法


echo -n    #表示不换行输出
echo -e    #输出转义字符,将转义后的内容输出到屏幕上

7. 设置变量的作用范围

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

系统环境中的 局部变量可以用export 来把局部提升至全局变量
提升后重启就失效了,如果想一直使用,则在/etc/profile里输入
export 变量名=变量值

格式1: export 变量名   #(赋过值得的)格式2: export 变量名=变量值    # (没赋过值的)两种格式可以混合使用


export rain          #导出为全局变量bash                 #进入子环境echo "$rain"

8. 整数的运算(四种书写方式)

shell中需要通过运算符才能实现运算,这里用整数的运算符


expr 变量1 运算符 变量2 [运算符变量3]...


四种方式:

四、特殊的Shell变量

1.环境变量

由系统提前创建,用来设置用户的工作环境

配置文件: /etc/profile、~/.bash_profile

路径名称 具体
PATH 可执行程序的默认搜索路径
USER 用户名称
SHELL 当前的 shell,它的值通常是 /bin/bash
HOME 用户的宿主目录
LANG 语言和字符集

echo $PASH           #显示pash路径变量值。(显示某个环境变量值,这里的pash可以是其他路径)
export               #设置一个新的环境变量
env                  #显示所有的环境变量
unset                #清除环境变量
set                  #显示本地定义的shell变量和环境变量echo $PATH            #查看当前搜索路径PATH="$PATH:/root"   #将/root目录添加到搜索路径export PATH="$PATH:/root"    #输出为全局环境变量first.sh



2. 只读变量

对于一些固定不变且不允许修改的变量。类似与环境变量设置为只读

3. 位置变量

在执行脚本的同时输入具体的变量参数
下图中的$1 $2 $3 表示的是位置变量参数,通过执行脚本时直接赋予


注意:$0 为此脚本本身的名字

10以后的需要加大括号
否则$11 为外面第一个数字 $1 +1


4. 预定义变量

$*、$@:表示命令或脚本要处理的参数。$*:把所有参数看成以空格分隔的一个字符串整体(单字符串)返回,代表"$1 $2 $3 $4"$@:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表"$1" "$2" "$3" "$4"$0:表示当前执行的脚本或命令的名称。$#:表示命令或脚本要处理的参数的个数$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。
$*、$@不加双引号时表现一致;加双引号时,$*会将所有参数作为一个整体。
vim bianliang.sh
#!/bin/bash
test()  {echo "未加引号,二者相同"echo $*echo $@echo "加入引号后对比"for N in "$*"doecho $Necho " "doneecho "----"for N in "$@"doecho $Necho " "             done
}
test 12 34 56 78

shell编程规范与变量相关推荐

  1. 【拔刀吧少年】之shell编程规范与变量

    shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官"(`又称命令的组合`) 二.用 ...

  2. shell脚本详解(一)——Shell编程规范与变量

    详解Shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell ...

  3. Shell脚本——Shell编程规范及变量

    Shell编程规范及变量 一.Shell脚本概述 1.1.1 Shell基本概念 1.1.2 Shell脚本应用场景 1.1.3 Shell作用--翻译官 二.shell编程规范 2.1 用户登录sh ...

  4. Shell脚本:shell编程规范与变量

    shell编程规范与变量 一.概述:解释器,编译器,翻译官. 1.定义: 2.作用: 3.应用场景: 4.登录: 5.shell脚本基本格式: 二.重定向与管道操作: 1.交互式硬件设备: 2.重定向 ...

  5. Shell 编程规范与变量

    文章目录 1 Shell 1.1 Shell 作用 2 Shell 脚本概述 2.1 Shell 脚本应用场景 3 编写 Shell 脚本 3.1 脚本的构成 3.2 编写脚本代码 3.2.1 注释有 ...

  6. Shell编程规范与变量(shell编程规范,执行脚本文件的四种方式,管道符号与重定向,shell变量的作用于类型)

    文章目录 Shell脚本概述 Shell脚本的概念 Shell的作用 Shell编程规范 重定向与管道 Shell脚本变量 自定义变量 特殊变量 Shell脚本概述 Shell Script ,She ...

  7. Shell编程规范与Shell中的管道符号(|)和重定向符号<、>、>>

    Shell脚本编程规范 Shell脚本的应用场景 Shell编程规范 1.Shell解释器程序的种类 2.编写一个简单的Shell脚本 3.执行脚本文件的方式 4.Shell环境中的:管道(|)与重定 ...

  8. Linux学习总结(79)—— Shell 编程规范

    前言 Shell 编程与其它的语言一样也有其约定的一些大家共同认可的约束和规范.编码规范对于程序员而言尤为重要,有以下几个原因: 一个软件的生命周期中,80% 的花费在于维护 几乎没有任何一个软件,在 ...

  9. Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一.Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行 二.Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变 ...

  10. shell编程之特殊变量

    一.特殊变量:$n 1.基本语法 $n(功能描述:n为数字,$0代表该脚本名称, $1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}) 2.案例实操 [root@ ...

最新文章

  1. 第三周-第08章节-Python3.5-文件修改详解
  2. php+mysql 大容量数据高效分页效果(弃用limit)
  3. 危机边缘第一季/全集Fringe迅雷下载
  4. 全球及中国仪器润滑剂行业十四五竞争形势与投资战略咨询报告2021-2027年版
  5. 外设驱动库开发笔记20:BME280压力湿度温度传感器驱动
  6. Win10配置VSCode+Opencv3(C++) GCC环境
  7. 回望之六:太阳山与红寺堡
  8. Nodejs Promise对象
  9. 二层交换机 不在同一子网_从二层交换机来说为什么三层交换机比路由器转发速率快...
  10. Developer Express 之 XtraReport如何动态绑定数据
  11. 基于Redis的微博的注册
  12. SQL Unicode
  13. numpy的sum函数、mean函数
  14. 博文视点卓越书单丨Python技术成长加油站
  15. 关于html中reset图片,关于html5中form表单的reset几种用法
  16. win10设置默认英文输入键盘
  17. 如何防止CSRF攻击
  18. ArcGIS模型构建器案例学习-批量删除空要素类地理模型
  19. 12.zabbix 自定义模板
  20. 基于语义分割实现人脸图像的皱纹检测定位与分割

热门文章

  1. js 操作ntko控件实现编辑文档内容
  2. 硅谷之火:人与计算机的未来
  3. 清华大学计算机专业高中选课系统,【清华大学计算机实验教学中心】_清华大学计算机实验教学中心...
  4. 两款免费、好用的数据库连接工具
  5. 百旺智能编码_“智能编码”助手助您规范使用税收分类编码
  6. NZ源码交易平台虚拟交易系统(商家版) 高仿淘码网模板
  7. php:兄弟连之面向对象版图形计算器2
  8. 恒强制版系统980_华为mate40将首批升级鸿蒙2.0系统?
  9. URLEncoder和URLDecoder;cookie中保存特殊字符以及URL中乱码问题解决方案
  10. bat批处理命令大全(翻译转载)