今天继续给大家介绍Linux基础知识,本文主要内容是Linux的shell脚本。

一、shell简介

shell是用户与Linux系统之间沟通的桥梁,用户通过shell给Linux下达命令,控制系统,同时系统也可以通过shell给用户反馈,如命令执行结果等。shell在本质上是Linux系统给用户提供的接口的集合。Linux shell的种类有很多,常见的shell如下:
1、Bourne shell
UNIX最初使用的shell。
2、Bourne again shell
Linux对于bourne shell的扩展,与bourne shell兼容,但是增加了一些新的特性。我们当前使用(CentOS7)的shell环境就是这个shell,该shell也是相当多的Linux操作系统使用的shell环境。
3、C shell
4、 K shell
5、shell for root
即Linux下/sbin/sh,root用户独有的shell执行环境。
shell除了可以执行命令以外,还可以将shell命令写成一个文件,该文件使用编程的方式实现某一特定的功能。如果我们把该文件赋予执行权限,则该文件就可以称为shell脚本。在生产环境中,运维工程师经常需要写一些shell脚本以帮助更好的执行命令。

二、shell脚本编写格式规范

为了使得shell脚本的编写规范、易读,我们在编写shell脚本的时候需要遵循一些规范,这些规范,有些是shell强制要求的,有些确实业内约定俗成使用的,凡是遵循这些规范写出的脚本,可读性较好,同时也有助于其他人的维护。
shell脚本规范如下:
1、脚本名称规范
shell脚本名称一般使用大写字母、小写字母或数字,不能使用特殊符号、空格或纯数字命名,脚本最后以.sh为后缀名。
2、变量使用规范
shell脚本中变量应该使用大写字母、下划线或者数字,但是不能以下划线或者数字开头。
3、脚本格式规范
shell脚本的第一行,应写明shell脚本的执行环境,如#!/bin/bash、#!/usr/bin/env python等。紧跟着的几行应该注明脚本的编写时间、编写者并简要说明脚本的作用。

三、shell脚本变量

shell脚本中变量分为三种,分别是系统变量、环境变量和用户变量,系统变量主要用于接收传入脚本的参数和查看命令执行的状态,环境变量是在脚本运行时与环境相关的变量,而用户变量则是用户自定义的变量。
shell脚本中常见的系统变量如下:
$0——表示脚本的名称
$N——N为正整数,表示传入脚本的第N个参数。
$*——表示传入脚本的所有参数,该变量是一个数组
$#——表示当前脚本的参数个数
$?——表示上一个命令执行的结果
shell脚本中常见的环境变量如下:
HOME——表示运行该脚本用户的家目录
PATH——表示该脚本中shell命令可能存在的目录
HSELL——表示脚本的SHELL类型
USER——表示运行该脚本的用户
PWD——表示该脚本在执行时的当前目录
HOSTNAME——表示该脚本在执行时的主机名
在定义shell脚本变量时,直接键入变量名=变量值即可,注意等号左右两边不要存在括号,当要调用脚本变量时,需要在变量名前面加上$符号,最好使用大括号将变量名括起来,这样可以防止后面一些内容对该变量名的干扰。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

Linux shell脚本详解及实战(一)——shell简介、shell变量及脚本规范相关推荐

  1. shell脚本详解(六)——数组简介和排序算法

    shell脚本详解(六)--数组简介和排序算法 一.数组 1.数组的定义方法 ①.方式一: ②.方式二: ③.方式三: ④.方式四: 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读 ...

  2. UEFI Shell命令详解,自写一个UEFI Shell命令

    首先,我们从BIOS进入Shell,输入help命令查看帮助信息 Shell:helpacpiview - Display ACPI Table information. alias - Displa ...

  3. Linux DNS服务详解——DNS实战配置

    今天继续给大家介绍Linux基础知识,本文主要内容是DNS的实战配置. 一.DNS安装与配置文件 如果采用YUM的安装方式,DNS设计到三个包,相关命令如下: yum install -y bind ...

  4. Linux DNS服务详解——DNS服务搭建细节

    前几天,我陆续给大家介绍了DNS服务的相关内容,今天,我给大家补充介绍一下DNS服务中一些小问题. 前文链接: Linux DNS服务详解--DNS基础知识 Linux DNS服务详解--DNS实战配 ...

  5. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

  6. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

  7. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  8. 11. shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则

    shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则 文章目录 1.1 read详解 1.2 用法示例 1.3 while read ...

  9. shell脚本详解(一)——初学shell脚本必看哦

    shell脚本详解 一.Shell脚本概述 1.1.shell脚本的概念 1.2.shell脚本应用场景 1.3.shell脚本能干什么 1.4. shell的作用--命令翻译器,"翻译官& ...

  10. shell脚本详解(十一)——awk文本和数据处理编程语言

    shell脚本详解(十一)--awk文本和数据处理编程语言 一.awk命令 – 文本和数据进行处理的编程语言 1.工作原理 2.命令格式 3.awk常见的内建变量(可直接使用) 4.按行输出文本 5. ...

最新文章

  1. java代码操作git_JGit--实现Git命令操作的Java API
  2. 如何在一个背景图像上,做半透明的图。
  3. Theme、StylesheetTheme设置ASP.NET的样式与主题
  4. Python处理多行文本问题--一个简单方法读取多行fasta文件
  5. mos管电路_【鼎阳硬件智库原创︱电源】 MOS管驱动电路的设计
  6. ARMV8/ARMV9的执行状态的切换
  7. 关于如何让cell一直保持选中?
  8. 入门机器学习,这一步必不可少!
  9. leetcode讲解--169. Majority Element
  10. 01-SpringMVC 原理
  11. java 私有成员方法_Java Reflection 教程(7):类私有成员变量和方法
  12. Java_Spring MVC_Servlet
  13. Web Control开发随笔(4):Control与WebControl 的Properity初探
  14. 我们公司为什么要放弃Lombok?因为它让你的代码处于了“亚健康”状态
  15. 判断这5个数值是否连续相邻
  16. python远程文件管理系统_如何在Windows上使用Python访问远程文件系统?
  17. 王道训练营作业 C++
  18. 《怪物猎人:世界》鼠标侧键点击无效的解决方法(罗技g402)
  19. File Systems Unfit as Distributed Storage Backends 开发十年Ceph的经验:文件系统不适合作为分布式存储后端
  20. 微信小程序连接数据库

热门文章

  1. 编写一个算法来判断一个数 n 是不是快乐数
  2. 数据分析 | 将业务问题转换为统计问题后,我看到了数字的真相
  3. 剑指 Offer II 083. 没有重复元素集合的全排列
  4. 三段话搞明白什么是Krylov子空间迭代法
  5. Count-Min Sketch 算法
  6. MySQL中的“<=>”操作符
  7. Leetcode10. Regular Expression Matching
  8. 力扣-剑指Offer-57 和为s的连续正数序列
  9. Vuex actions 异步操作基础
  10. Java 笔记(二)