当前位置:网站首页>shell规范与变量
shell规范与变量
2022-08-01 21:25:00 【花生味花生米】
目录
前言
shell脚本是一种计算机程序,旨在由Unixshell(一种命令行解释器)运行。shell脚本的各种方言被认为是脚本语言。shell脚本执行的典型操作包括文件操作、程序执行和打印文本。设置环境、运行程序并执行任何必要的清理或日志记录的脚本称为wrapper。
一.shell脚本概述
Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell。
1.shell脚本
将要执行的命令按顺序保存到一个文本文件
给文件可执行权限
可结合各种shell控制语句以完成更复杂的操作
2.shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态控制
定时任务执行
二.Shell脚本的构成
1.脚本申明(解释器):若第一行为“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
2.注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
3.可执行语句:比如echo命令,用于输出" "之间的字符串。
4.执行脚本需要添加执行权限
vim js.sh
#!/bin/bash
echo "my shell"
chmod o+x js.sh
三.管道作用
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
echo “123123” | passwd --stdin wk
两个进程之间相互交互的载体,父进程和子进程
四.重定向
类型 操作符 用途
重定向输入 < 从指定的文件读取数据,而不是键盘输入
重定向输入 > 将输出结果保存到指定的文件(覆盖原有内容)
>> 将输出结果追加到指定的文件尾部
标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有文件)
2>> 将错误信息追加到指定原有文件中
混合输出 &> 将标准输出、标准错误的内容保存到同一文件中
五.变量的分类
格式: 变量名=变量值(=表示赋值)
环境变量: 由系统维护,用于设置工作环境
位置变量: 通过命令行给脚本程序传递参数
自定义变量:由用户自己定义、修改和使用
预定义变量:Bash中内置的一类变量,不能直接修改
$?=判断上一条指令能否正常输出,能则返回0,不能则返回非0。
六.shell引号使用
单引号''
禁止引用其他变量值,$视为普通字符
双引号""
允许通过$符号引用其他变量值
反撇号``
命令替换,提取命令执行后的输出结果,`…`和$(…)作用相同
七.read的使用
交互式定义变量
八.变量的运算
加: echo `expr $a + $b`
减: echo `expr $a - $b`
乘: echo `expr $a \* $b`
除: echo `expr $a / $b`
取余:echo `expr $a % $b`
求圆的直径
#!/bin/bash
p=3.14
read -p "zhijin: " A
b=`echo "scale=2;A/2" | bc`
m=`echo "scale=2;$b^2" | bc`
M=`echo "scale=2;$p*$m" | bc`
echo $M
常用的运算表达式:
a=$(expr 12 \* 5)
a=$((12 * 5))
a=$[12 * 5]
let a=12*5
i++ 相当于 i=$[$i+1]
i-- 相当于 i=$[$i-1]
i+=2 相当于 i=$[$i+2]
九.EOF的用法
十.预定义变量
$*、[email protected]:表示命令或脚本要处理的参数。
$*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
[email protected]:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立的,代表"$1" "$2" "$3" "$4"。
$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。
$!:返回最后一个后台进程的进程号
十一.环境变量
环境变量由系统提前创建,用来设置用户的工作环境
使用 env 命令可以查看到当前工作环境下的环境变量
变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,
变量PATH表示可执行程序的默认搜索路径
边栏推荐
- Get started with Grafana in 15 minutes
- C陷阱与缺陷 第7章 可移植性缺陷 7.7 除法运算时发生的截断
- JSD-2204-Knife4j框架-处理响应结果-Day07
- ORI-GB-NP半乳糖介导冬凌草甲素/姜黄素牛血清白蛋白纳米粒的研究制备方法
- C专家编程 第1章 C:穿越时空的迷雾 1.4 K&R C
- Image fusion GANMcC study notes
- 测试的意义并不是能找到全部的缺陷
- 位运算简介
- C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.2 Early Experience of C Language
- 如何优雅的性能调优,分享一线大佬性能调优的心路历程
猜你喜欢
随机推荐
Upload markdown documents to blog garden
小程序--分包
C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.5 ANSI C Today
小程序--独立分包&分包预下载
0DFS中等 LeetCode6134. 找到离给定两个节点最近的节点
一个关于操作数据库的建议—用户密码
基于php湘西旅游网站管理系统获取(php毕业设计)
FusionGAN:A generative adversarial network for infrared and visible image fusion文章学习笔记
Scala practice questions + answers
Popular explanation: what is a clinical prediction model
C pitfalls and pitfalls Chapter 7. Portability pitfalls 7.10 Free first, then realloc
HCIP---企业网的架构
Jmeter实战 | 同用户重复并发多次抢红包
对C语言结构体内存对齐的理解
LeetCode·每日一题·1374.生成每种字符都是奇数个的字符串·模拟
如何让定时器在页面最小化的时候不执行?
二分法中等 LeetCode6133. 分组的最大数量
C pitfalls and pitfalls Chapter 8 Suggestions and answers 8.2 Answers
C专家编程 第1章 C:穿越时空的迷雾 1.5 今日之ANSI C
基于php影视资讯网站管理系统获取(php毕业设计)