栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell 语言

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell 语言

目录
  • 一.shell脚本基础
    • 1 shell的作用
    • 2.什么是shell脚本?及构成
    • 3.脚本执行逻辑及执行方式脚本执行逻辑
    • 4.脚本错误
    • 5.脚本错误常见的有三种区别
    • 6.执行脚本方式
      • 1)./脚本
      • 2).bash 脚本
      • 3). . 脚本
      • 4).做软链接
      • 5).sourse 脚本
      • 6).sh 脚本
    • 7.脚本应用场景
  • 二.重定向
    • 1.交互式硬件设备
    • 2.E0F
    • 2.重定向操作
  • 三.变量
    • 1.变量基础
    • 2.命名要求
    • 3.变量追加值
    • 4.read -p
    • 5.整数的运算
    • 6.只读变量
    • 7.位置变量
    • 8.预定义变量
  • 总结

一.shell脚本基础 1 shell的作用

Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
常见的Shell解释器程序有很多种,使用不同的Shell时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类。

2.什么是shell脚本?及构成

就是将命令按顺序——列出,最后自动执行·
执行需要权限,也可以直接使用绝对
脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本构成
1.脚本申明(解释器)︰第一行开头"#! /bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行。#! /bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python #! /bin/expect
2.注释信息:以#开头的语句表示为注释信息T

3.脚本执行逻辑及执行方式脚本执行逻辑

1.顺序执行:程序按从上到下顺序执行
2.选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
3.循环执行:程序执行过程中需要重复执行多次某段语句

4.脚本错误

1.命令错误
命令出错不会影响接下来的命令继续
2.语法错误
会英雄接下来的命令继续
3.逻辑错误

5.脚本错误常见的有三种区别

1.语法错误,会导致后续的命令不继续执行,可以用bash -n检查错误,提示的出错行数不—定是准确的
2.命令错误,默认后续的命令还会继续执行,用bash -n无法检查出来,可以使用bash -x进行观察
3.逻辑错误:只能使用bash -x进行
例子:写一个yum仓库

6.执行脚本方式 1)./脚本
[root@localhost ~]# chmod 777 xx.sh           #必须加权限,否则无法运行
[root@localhost ~]# ./xx.sh
主机名:localhost.localdomain
IP地址:192.168.133.50
cpu信息: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
版本信息:CentOS Linux release 7.4.1708 (Core)
内核信息:3.10.0-693.el7.x86_64
内存信息:3.7G
硬盘信息: 107.4 GB

2).bash 脚本
[root@localhost ~]# bash xx.sh
主机名:localhost.localdomain
IP地址:192.168.133.50
cpu信息: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
版本信息:CentOS Linux release 7.4.1708 (Core)
内核信息:3.10.0-693.el7.x86_64
内存信息:3.7G
硬盘信息: 107.4 GB

3). . 脚本
[root@localhost ~]# . xx.sh
主机名:localhost.localdomain
IP地址:192.168.133.50
cpu信息: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
版本信息:CentOS Linux release 7.4.1708 (Core)
内核信息:3.10.0-693.el7.x86_64
内存信息:3.7G
硬盘信息: 107.4 GB

4).做软链接 5).sourse 脚本
[root@localhost ~]# source xx.sh
主机名:localhost.localdomain
IP地址:192.168.133.50
cpu信息: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
版本信息:CentOS Linux release 7.4.1708 (Core)
内核信息:3.10.0-693.el7.x86_64
内存信息:3.7G
硬盘信息: 107.4 GB

6).sh 脚本
[root@localhost ~]# sh xx.sh
主机名:localhost.localdomain
IP地址:192.168.133.50
cpu信息: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
版本信息:CentOS Linux release 7.4.1708 (Core)
内核信息:3.10.0-693.el7.x86_64
内存信息:3.7G
硬盘信息: 107.4 GB
7.脚本应用场景

重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行

二.重定向 1.交互式硬件设备

标准输入:从该设备结束用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告只能怪出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stdout2显示器
[root@localhost ~]# echo "123123" |passwd --stdin  用户名           改密
2.E0F

Shell中通常将E0F与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到E0F为止,再返回到主调Shell。
可以把E0F替换成其他东西,意思是把内容当作标准输入传给程序。

回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。

cat和eof结合使用具有追加功能
使用Cat和EOF多行输入
cat >> /root/test.txt < 
2.重定向操作 
类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>将错误信息追加到指定的文件中
混合输出&>将标准输出、标准错误的内容保存到同一个文件中
[root@centos7 ~]#ls /data /xxx > /data/all. 1og 2>&1
[root@centos7 ~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos7 ~]#ls /data /xxx &> /data/all.log
[root@centos7 ~]#ls /data /xxx >& /data/all.1og

错误
[root@centos7 ~]#ls /data /xxx 2>&1 > /data/all. 1og
三.变量

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

1.变量基础

常见Shell 变量的类型包括:
1自定义变量:由用户自己定义,修改和使用
2环境变量:由系统维护,用于设置工作环境
3只读变量:只可以读取不可以更改
4位置变量:通过命令行给脚本传递参数
5预定义变量:Bash中内置的一类变量,不能修改

2.命名要求

区分大小写
不能使程序中的保留字和内置变量:如:if, for,hostname
只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线"-”,和主机名相反不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH
大驼峰StudentFirstName
小驼峰studentFirstName
下划线:student_name

[root@localhost ~]# zy=ky15
[root@localhost ~]# class=201
[root@localhost ~]# echo $zy$class
ky15201
[root@localhost ~]# echo $zy:$class
ky15:201
[root@localhost ~]# echo ${zy}2021
ky152021
[root@localhost ~]# echo "$zy"2021
ky152021

{}分隔变量的范围
“ ”识别变量
’ ‘会把变量识别成字符串
1.赋值时使用双引号("")可以直接调用变量
⒉赋值时使用单引号(’ ‘) 只 会 被 认 为 是 字 符 只会被认为是字符 只会被认为是字符不会调用变量
3.赋值时使用(反撇在tab上面)命令替换,提取命令执行后的输出结果$)用法相同
4{ }可以分隔变量值

单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,“最傻”
双引号:弱引用,不能识别命令,可以识别变量,“半傻不精”
反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续,"最聪明
引用变量 命 令 执 行 结 果 {} 命令执行结果 命令执行结果()
运算$[] 或者 $(())

$() 或 ``引用命令执行的结果
( ( ) ) 或 (()) 或 (())或[]进行运算
使用 或 " {}或" 或"变量名" 划定变量名的起止范围

3.变量追加值

变量名+=追加值

[root@localhost ~]# zy=ky15
[root@localhost ~]# zy+=2021
[root@localhost ~]# echo $zy
ky152021

4.read -p

从键盘输入的内容变成变量

[root@localhost ~]# read -p "请输入一个价格:" num
请输入一个价格:123

5.整数的运算

expr只能进行整数的运算
格式: expr变量1运算符变量2[运算符变量3]
运算符:
加法+
减法-
乘法*
除法/
取余(取模)%

[root@localhost ~]# expr 1 + 1
2
[root@localhost ~]# expr 5 - 1
4
[root@localhost ~]# expr 20 / 4
5
[root@localhost ~]# expr 3 * 4
12
[root@localhost ~]# expr 17 % 4
1

[root@localhost ~]# i=100;j=100;let j=i++;echo "i=$j j=$i"
i=100 j=101                                               先赋值再加减
[root@localhost ~]# i=100;j=100;let j=++i;echo "i=$j j=$i"
i=101 j=101                                               先运算再赋值

6.只读变量

格式
readonly 变量名

[root@localhost ~]# zy=hello
[root@localhost ~]# readonly zy
[root@localhost ~]# zy+=yudf
-bash: zy: readonly variable

这种情况下只能重启才能失效

7.位置变量

格式
脚本

[root@test1 ~]#vim l.sh
#!/bin/bash
echo "$1"           位置1
echo "$2"           位置2
echo "${10}”        位置10
echo "$10"          位置1和0相当于$1+0
8.预定义变量
$*          将所有项当成一个值
$@          所有项各自成项,
$0          脚本自身
$#          命令行位置参数的个数
$?          表示之前一条命令或者脚本执行后的返回状态,0正确,非0则不正确
总结

Shell的作用与应用场景
ShelI脚本的编写规范与执行方法重定向与管道的作用与使用方法
自定义变量赋值时单引号、双引号、反撇号的使用方法
数值变量的常用运算符:+、-、l*、I、%
环境变量、只读变量、位智变雀、制定义变量的用途

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号