IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> shell脚本基础 -> 正文阅读

[系统运维]shell脚本基础

目录

一,shell的作用

二,shell脚本及构成

三,脚本执行逻辑及执行方式

脚本执行逻辑

执行脚本文件

四,脚本错误

五,重定向与管道操作

?六,变量

6.1基础变量

?6.2命名要求

6.3从键盘输入内容为变量赋值

6.4变量的作用范围

七,整数变量的运算

?八,特殊shell变量

?九,位置变量

十,总结


一,shell的作用

Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核于用户之间,充当一个“命令解释器”的角色,负责接收用户输入的操作指令进行解释,并需要执行的操作传递给内核执行,并输出执行结果。

查看本机的shell信息

Linux中常见的shell?

bash:基于gun的框架下发展的shell

csh:类似c语言的shell

tcsh:整合了csh提供了更多功能

sh:已经被bash替换

nologin:这个可以让用户无法登陆

bash(/bin/bash)是目前大多数Linux版本采用的默认shell

二,shell脚本及构成

将命令按顺序--列出,最后自动执行

执行需要权限,可以直接使用绝对路径

脚本其实不复杂,通过脚本环境依然可以使用的脚本

构成:

1,脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行一下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器

2,注释信息:以#开头的语句表示为注释信息

3,可执行语句:比如echo命令用于输出“ ”之间的字符串

三,脚本执行逻辑及执行方式

脚本执行逻辑

1,顺序执行 :程序从上到下顺序执行

2,选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

3,循环执行:程序执行过程中需要重复执行多次某段语句

执行脚本文件

方法一:脚本文件路径(绝对路径与相对路径)必须有x权限

[root@localhost~]#./first.sh

方法二:sh脚本文件路径

[root@localhost~]# sh first.sh

方法三:source脚本文件路径(可以通过“.”来执行)

[root@localhost~]#source first.sh

四,脚本错误

1,一类命令错误命令出错不会影响接下来的命令继续

2,语法错误

3,逻辑错误

查代码的正确

bash -n 脚本名称(不在当前目录下加绝对路径) 检查语法错误
bash -x 脚本名称(不在)

总结:脚本错误常见的有三种区别

1,语法错误,会导致后续的命令不继续执行,可以用bash -n检查错误,提示的出错行数不一定是准确的

2,命令错误,是默认后续的命令还会继续执行,用bash -n无法检查出来,可以使用bash -x进行观察

3,逻辑错误:只能使用bash -x进行

五,重定向与管道操作

(一),交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出

/dev/stderr

2显示器

重定向的意思就是,不通过标准输出到屏幕上,输出到你指定的位置

类型操作符用途
重定向出入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的问(覆盖原有内容)
2>>将错误信息追加到指定的文件中
混合输出&>将标准输出,标准错误的内容保存到同一个文件中

举例:

ls /data /xxx > /data/all.log 2>&1
ls /data /xxx 2> /data/all.log 1>&2
ls /data /xxx &> /data/all.log 
ls /data /xxx >& /data/all.log 
ls /data /xxx 2>&1> /data/all.log 

?

?

?

?

?六,变量

保存将来会变化的数据,及时数据变化,直接调用变量即可,各种shell环境中都使用到了变量的概念,shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而变化。通过使用变量,shell程序能够提供更加灵活的功能,适应性更强。

6.1基础变量

常见shell变量的类型包括:

1自定义变量:系统用户自定义,修改和使用

2环境变量:系统维护,用于设置工作环境

3只读变量:只可以读取不可以更改

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

?5预定义变量:Bash中内置的一类变量,不能知己修改

系统内置变量:PATH,UID,HOSTNAME

?6.2命名要求

区分大小写

不能使程序中的保留字和内置变量,如if,for,hostname

能使用数字,字母下划线,并且不能以数字开头,注意,不支持短横杠“-,和主机名相反”

不能使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

大驼峰StudentFirstName

小驼峰studentFirstName

下划线student_name

注:

1,赋值时使用双引号(“”)可以直接调用变量

2,赋值时使用单引号(‘’)$只会被认为是字符$不会调用变量

3,赋值时使用(``)命令替换,提取命令执行后的输出结果$()用法相同

4,{}可以分隔变量值

补充说明:

如果想要输出为结果可以使用echo$

?如何查看IP地址:

6.3从键盘输入内容为变量赋值

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

举例:

#!/bin/bash
read -p "请输入体重kg:" a
if [ $a -lt 50 ] &&  [ $a -lt 60 ]
then
echo "微胖"
elif [ $a -lt 50 ] && [ $a -gt 0 ]
then
echo "瘦"
else
echo "胖"
fi

6.4变量的作用范围

(1)默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的子shell环境时,局部变量将无法在使用
可以使用 pstree 命令查看Shell环境,输入 bash 命令进入子Shell环境。
使用pstree命令查看当前的shell环境

?(2)命令格式:

可以通过内部命令export指定变量到处为全局变量,使用户定义变量在所有的子shell环境中能够继续使用

格式1: export 变量名

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

七,整数变量的运算

整数变量的运算:

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

常用运算符:

加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
整数取余:%

举例:

?

?

?八,特殊shell变量

环境变量

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

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

常见的环境变量:

使用env命令可以查看单签工作环境下得环境变量

USER表示用户名称

HOME表示用户的宿主目录

LANG表示语言和字符集

PWD表示当前所在的工作目录

PATH表示可执行程序的默认搜索路径

举例:

[root@localhost opt]# #PASH="$PATH:/root"
[root@localhost opt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

?九,位置变量

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$0:当前执行的进程/程序名

$*、$@:表示命令或脚本要处理的参数。
  $*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
  $@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立  的,代表"$1" "$2" "$3" "$4"。

echo "$1" ? ? ? ? ? ?位置1
echo "$2" ? ? ? ? ? ?位置2
echo "${10}" ? ? ? ? 位置10
echo "$10" ? ? ? ? ? 位置1和0
echo "$*" ? ? ? ? ? ?将所有项当成一个值
echo "$@" ? ? ? ? ? ?所有项
echo "$0" ? ? ? ? ? ?脚本自身
echo "$#" ? ? ? ? ? ?后面参数的个数

十,总结

学习了Linux脚本的基础命令,需要熟练掌握,最主要的是需要记住几个变量。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 13:11:54  更:2021-10-27 13:14:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:39:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码