shell的编程规范和变量
一、Shell脚本概述
1、shell脚本的概念
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种shell控制语句以完成更复杂的操作
2、shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
3、shell的作用——命令翻译器,“翻译官”
介于系统内核与用户之间,负责解释命令行
二、用户的登录shell
三、shell脚本的构成
脚本申明(解释器):若第一行为“#!/bin/bash” ,表示此行之下的代码语句是通过/bin/bash程序来结实执行,#!/bin/bash为默认解释器,还有其他类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时将不被执行。
可执行语句:比如echo命令,用于输出“ ”之间的字符串。
四、shell脚本的执行
方法一:指定路径的命令,要求文件必须有执行(x)权限
方法二:指定shell来解释脚本,不要求文件必须有写(x)的权限
①、sh脚本路径
②、source脚本路径
五、重定向
1、重定向——交互式硬件设备
2、重定向——重定向操作(用于自动化脚本,输出查证。)
六、Shell脚本变量
1、变量的作用
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
2、变量的分类
自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置工作环境
只读变量:用于变量值不允许被修改的情况
位置变量:通过命令行给脚本程序传递参数
预定义变量:bash中内置的一类变量,不能直接修改
七、自定义变量
1、定义新变量:
变量名=变量值
命名规则:以字母或下划线开头,区分大小写(建议大写)
2、查看变量的值:
echo $变量名
3、赋值时使用引号
看cpu命令free -m
free -m | grep "Men:"
4、read命令获取输入内容
①、方法一:
read -p "提示信息" 变量名
echo $"变量名"
方法二:
echo -n "提示信息"
read 变量名
echo $变量名
5、变量作用范围
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量值
可以使用 pstree 命令查看Shell环境,输入 bash 命令进入子Shell环境,按Ctrl+D组合键或输入 exit 命令退出子Shell环境。
6、整数变量的运算
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的编程规范和变量的更多相关文章
- 01 shell编程规范与变量
前言: 大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗 本 ...
- Shell脚本之编程规范和变量
Shell脚本编程规划和变量 1.Shell脚本概述 2.Shell编程规划 3.重定向与管道 4.Shell脚本变量 1.Shell脚本概述 Shell的作用:充当"翻译官"的角 ...
- linux shell语言编程规范安全篇之通用原则【转】
shell语言编程规范安全篇是针对bash语言编程中的数据校验.加密与解密.脚本执行.目录&文件操作等方面,描述可能导致安全漏洞或风险的常见编码错误.该规范基于业界最佳实践,并总结了公司内部的 ...
- SHELL编程规范与变量
shell相比标准开发语言比如JAVA,C,C++来说还是比较简单的,其实就是一堆命令的集合而已,初学者从简单的shell脚本学起,至于shell编程还是要有编程思想在里面,因此,循序渐进很重要,先研 ...
- shell 脚本编程之特殊变量
$0 当前脚本的文件名$n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2.$# 传递给脚本或函数的参数个数.$* 传递给脚本或函数的所有参数.$@ ...
- shell脚本编写规范和相关变量类型
shell编程规范与变量 一.shell脚本概述 ① 什么是shell? Linux中有哪些shell? ② shell的作用 ③ 用户的登录shell ④ shell脚本 ...
- WindowsclientC/C++编程规范“建议”——前言
前言 工作中接触了非常多编程规范.当中最有意思的是,公司近期公布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:"该规范不适用于Windows平台开发".看来这 ...
- SAP官方发布的ABAP编程规范
最近有朋友在公众号后台给我留言,"Jerry啊,你最近写的都是一些SAP研究院里面用到的新技术,能不能写点SAP传统的开发技术比如ABAP相关的东西"? 其实Jerry在刚开始写这 ...
- 【Shell脚本编程系列】Shell脚本开发的习惯和规范
1.开头指定脚本解释器 #!/bin/sh或#!/bin/bash 2.开头加版本版权信息 #Date #Author #Mail #Function #Version 提示:可配置vim编辑文件时自 ...
随机推荐
- 环境安装——MySQL安装
@ 目录 一文教会你安装与卸载MySQL 1. 官网下载 2. 文件下载 3. 卸载步骤 4. 安装步骤 5. MySQL配置 6. 安装出现的问题 6.1 如果出现了最后一步卡死的状态的话,不要慌: ...
- 上手 Raspberry Pi Pico
什么是 PICO Raspberry Pi Pico 是树莓派推出的一块基于 Arm Cortex-M0+ 内核的 MCU 的开发板,使用的 MCU 是树莓派自己研发的 Arm Cortex-M0+ ...
- Java并发编程中的锁
synchronized 使用synchronized实现同步有2种方式: 同步方法(静态与非静态) 同步代码块 任何Java对象均可作为锁使用,其中,使用的锁对象有以下3种: 静态同步方法中,锁是当 ...
- 39、mysql数据库(视图)
39.1.视图: 0.创建表及插入数据: 1.创建teacher表及插入数据: (1)创建表: CREATE TABLE teacher( tid int PRIMARY KEY auto_incre ...
- 4.3Unicode和ASCII码
- 用“kill”命令来强制终结某个行为或失常的应用和命令
首先让我们先了解"kill"命令,无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭.在Linux(还有Mac),你可以用一个" ...
- Centos中安装Node.Js
NodeJs安装有好几种方式: 第一种: 最简单的是用yum命令,可惜我现在用的时候 发现 镜像中没有nodejs:所以这种方式放弃: 第二种:去官网下载源码,然后自己编译:编译过程中可能会出现问题, ...
- python中的内置函数lambda map filter reduce
p.p1 { margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "Helveti ...
- 动态路由协议、RIP
动态路由协议.RIP 一.动态路由协议 1)动态路由协议概述 2)度量值 3)收敛 4)静态路由与动态路由的比较 5)动 ...
- 关于torch.nn.LSTM()的输入和输出
主角torch.nn.LSTM() 初始化时要传入的参数 | Args: | input_size: The number of expected features in the input `x` ...