前言:

大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗

本文整理自博主当年的学习笔记,若有疏漏欢迎指正!

Shell编程规范与变量

学习目标:

掌握shell脚本编程规范

掌握管道,重定向,变量

目录结构:

Shell脚本的概念

  1. 将要执行的命令按顺序保存到一个文本文件
  2. 给文件可执行权限,便可运行。
  3. 可以结合各种shell控制语句以便完成更复杂的操作
  4. 脚本文件一般以.sh结尾,执行脚本的命令是sh

Shell脚本应用场景

  1. 重复性操作
  2. 批量事物处理
  3. 自动化运维
  4. 服务运行状态监控
  5. 定时任务执行
  6. ……

Shell脚本的组成

1、 脚本声明 #!/bin/bash一般是这样的

2、 注释信息 以#开头注释脚本大概情况

3、 可执行语句 就是指正文,命令的叠加

编写shell脚本

[root@poll ~]# vi a.sh   //编辑脚本文件,脚本文件一般都是以.sh结尾的

#!/bin/bash   //声明这是·一个脚本

#This is my first shell-script   //注释一般用来记录脚本的功能

#2018-03-16   //注释 记录脚本时间

cd /boot   //切换到/boot目录下

echo "当前目录位于:"   //显示双引号内的内容

pwd   //显示当前目录

echo "其中以vml开头的文件包括:"   //显示双引号内的内容

ls -lh vml*   //执行命令

注意:有交互用read -p 没有用echo

Shell脚本的执行方式

1、 绝对路径

2、 相对路径

3、 sh脚本

4、 source脚本

shell脚本变量揭秘

变量概念与分类

变量的概念:

1、 变量用来存放系统或用户需要使用的特定参数或者值

2、 变量的的值可以根据用户设定或者系统环境的变化面相应变化

3、 在shell脚本中使用命令可以使脚本更加灵活,适应性更强

变量的分类:

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

环境变量:由系统维护,用于设定系统环境

位置变量:通过命令行给脚本程序传递参数

预定义变量:bash中内置的一种变量,不能直接修改

变量的定义与输出

定义一个新的变量

格式:变量名=变量值

变量名以字母或者下划线开头

区分大小写

赋值可使用引号

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号``或$():命令替换,提取命令的执行结果

 

输入输出

输入格式:read [-p “提示信息”] 变量名

输出格式:echo $变量名

 

变量作用范围

l  ’默认情况下,新定义的变量只在当前shell环境中有效,因此称为局部变量

l  当进入子程序或新的子shell环境时,局部变量无法再使用

l  为了使用户定义的变量在所有的子shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将制定的变量导出为“全局变量”

格式1:export 变量名…

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

两种格式可以混合使用

变量的算术运算

l  变量的数值运算多用于脚本程序的过程控制

l  只能进行简单得整数运算,不支持小数运算

l  整数值得运算主要通过内部命令expr进行

l  格式

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

l  +:加法运算

l  -:减法运算

l  \* :乘法运算,注意不能仅使用“*”符号,否则将被当成文件通配符

l  /:除法运算

l  %:求模运算,又称为取余运算,用来计算数值相除后的余数

实例:

[root@poll ~]# x=35

[root@poll ~]# y=16

[root@poll ~]# expr $x + $y

51

[root@poll ~]# expr $x - $y

19

[root@poll ~]# expr $x \* $y

560

[root@poll ~]# expr $x / $y

2

[root@poll ~]# expr $x % $y

预定义变量

l  预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值

l  预定义变量使用“$”符号和另一个符号组合表示

l  $*  $@

保存了脚本要处理的所有参数

l  $0

保存了脚本的名称

l  $?

保存着命令或者脚本运行状态码,上一条命令运行成功结果显示0

l  $#

保存了脚本要处理的参数个数

位置变量

l  为了在使用shell脚本程序时,方便通过命令行为程序提供操作数,bash引入了位置变量的概念

l  位置变量有$0,$n,n为1~9之间的数字

l  $0:第一个字段表示命令名或脚本程序名

l  $1为脚本要处理的第一个参数,$2为第二个参数,……

l  Shell脚本最多可以直接处理9个参数

环境变量

l  环境变量指的是出于运行需要而由Linux系统提前创建的一类变量,主要用于设置用户的工作环境

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

l  PATH环境变量用于设置可执行程序的默认搜索路径

l  环境变量的全局配置文件为/etc/profile,每个用户还有自己的独立的配置文件~/.bash_prpfile

这是shell编程初步接触,后续发各种shell编程语句。下面有一个简单的脚本样例

------一个小计算器-----

#!/bin/bash

#this

read -p "请输入第一个整数:" ONE

read -p "请输入第二个整数:" TWO

read -p "请输入运算符:" TH

echo "$ONE$TH$TWO=$(($ONE $TH $TWO))"

01 shell编程规范与变量的更多相关文章

  1. SHELL编程规范与变量

    shell相比标准开发语言比如JAVA,C,C++来说还是比较简单的,其实就是一堆命令的集合而已,初学者从简单的shell脚本学起,至于shell编程还是要有编程思想在里面,因此,循序渐进很重要,先研 ...

  2. Shell脚本之编程规范和变量

    Shell脚本编程规划和变量 1.Shell脚本概述 2.Shell编程规划 3.重定向与管道 4.Shell脚本变量 1.Shell脚本概述 Shell的作用:充当"翻译官"的角 ...

  3. shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~]# cat /server/scripts/show2.sh #!/bin/ ...

  4. 【转】shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    [转]shell编程下 特殊变量.test / [ ]判断.循环.脚本排错 第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~] ...

  5. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

  6. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  7. shell编程之环境变量

    在shell编程里我们首先接触到的是环境变量,常用命令说明 1. 使用echo命令查看单个环境变量.例如: echo $PATH 2. 使用env查看所有环境变量.例如: env 3. 使用set查看 ...

  8. shell编程规范:引用

    Shell代码规范 作 者: 毕小朋 用 途: 规范Shell代码书写,方便查看与修改 博 客: http://blog.csdn.net/wirelessqa 参 考: http://www.ohl ...

  9. linux系列之-—01 shell编程笔记

    一.特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的 ...

随机推荐

  1. mardown文档的用法

    <hr>分割换行符<br>分隔符 <ul> <li></li></ul>无序标签 <ol><li>< ...

  2. 模仿ecshop建立木瓜商城数据库(MySQL)

    1. 安装ecshop(打开gd扩展) 2. 使用图形化界面工具,如phpmyadmin查看数据.(以前用命令行,主要锻炼代码熟练度!) # 建木瓜库 create database mugua ch ...

  3. 【起航计划ObjC 002】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用MAC虚拟机

    本文介绍如何在Ubuntu下安装Mac OS X Mavericks系统.具体如下: 1)安装前准备工作 下载Mac OS X Mavericks系统,地址:http://pan.baidu.com/ ...

  4. Hive的运算和函数大全

    hive 常用运算 测试各种内置函数的快捷方法: 创建一个 dual 表 create table dual(id string); load 一个文件(只有一行内容:内容为一个空格)到 dual 表 ...

  5. Flutter仿照airbnb创建app

    github地址:https://github.com/GainLoss/flutter-app 一.基础 flutter是谷歌公司开发的开源免费的UI框架,用dart语言实现的,可以实现跨平台,一套 ...

  6. 漫谈C++:良好的编程习惯与编程要点(转载)

    这个博主写的文章真是细腻,全面,严谨,应当多读几回 原文http://www.cnblogs.com/QG-whz/p/5517643.html 阅读目录 以良好的方式编写C++ class Clas ...

  7. Shell脚本学习之expect命令

     转载:http://blog.csdn.net/leexide/article/details/17485451 目录(?)[-] 一概述 二expect的安装 一Tcl 安装 二expect 安装 ...

  8. 【洛谷P2296】[NOIP2014]寻找道路

    寻找道路 题目链接 这道题非常的水,按照题意, 先反向建边,从终点搜索,标记出可以到达终点的点 然后枚举一遍,判断出符合条件1的点 再从起点搜索一遍就可以了 #include<iostream& ...

  9. 学大伟业 Day 4 培训总结

    今天讲的全是dp... 不多废话,先看一道经典的模板LIS(最长不下降子序列) 一.LIS 给定一个长度为N的数列,求最长上升子序列 例:1 7 2 8 3 4 答案:1 2 3 4 代码: #inc ...

  10. 【luoguP1086】【2004NOIP-Ua】花生采摘

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都 ...