首页 > 系统相关 >shell脚本编程

shell脚本编程

时间:2024-07-26 15:54:01浏览次数:19  
标签:脚本 Shell 变量 编程 sh shell root

一、shell 基础

1、shell 概念 shell 英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是 操作系统的外壳。可以通过shell 命令来操作和控制操作系统,比如 Linux中的shell命令就包括 ls、cd、pwd 等等。 shell 在内核的基础上编写的一个应用程序,它连接了用户和 Linux 内 核,从而让用户能够更加便捷、高效、安全的使用 linux 内核,这其实 就是 shell 的本质。 使用专业术语的说法来解释,Shell 其实是一个命令解释器,它通过接 受用户输入的 Shell 命令来启动、暂停、停止程序的运行或对计算机进 行控制。

常见的 shell:

Bourne Shell (/usr/bin/sh或/bin/sh)

Bourne Again Shell (/bin/bash)

C Shell (/usr/bin/csh)

K Shell (/usr/bin/ksh)

Shell for Root (/sbin/sh)

2、shell 脚本 shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件 中,进行处理业务逻辑,脚本不用编译即可运行,它从一定程度上减轻 了工作量,提高了工作效率,还可以批量、定时处理主机,方便管理员 进行设置或者管理。

3、shell 脚本编写注意事项 shell命名: shell脚本名称命名一般为英文、大写、小写、后缀以.sh结尾 不能使用特殊符号、空格 名称要写的一眼可以看出功能,也就是顾名思义 shell脚本首行需要#!/bin/bash开头 shell脚本变量不能以数字、特殊符号开头,可以使用下划线 _,但不能 用破折号——

二、shell 脚本的构成

脚本声明

注释信息

可执行语句

三、编写 shell 脚本

1、伟大编程项目——Hello World 'Hello,World!' 中文意思是“你好,世界”。因为 The C Programming Language 中使用它做为第一个演示程序,后来的程序员在学习编程或 进行设备调试时延续了这一习惯。 执行shell脚本的几种 bash 脚本名称 source 脚本名 在当前环境生效,其他方法都是在开一个 shell进程

sh 脚本名称

添加x权限,./脚本名称

shell脚本其实就是有序执行命令条件

[root@localhost ~]# touch hello.sh

[root@localhost ~]# vim hello.sh

#!/bin/bash

echo "Hello World!"

[root@localhost ~]# sh hello.sh‘

2、编写 nginx 安装脚本

1.安装依赖环境

2.下载nginx压缩包

3.解压

4.make和make install安装

5.按照顺序执行指令

[root@localhost ~]# vim /root/shell/install_nginx.sh

四、变量

1、概念 变量用来存放系统或用户需要使用的特定参数或者值,变量的值可以根 据用户设定或者系统环境变化而相应变化,在Shell脚本中使用变量,可 使脚本更加灵活,适应性更强。 与变量相对应的是常量,常量例如“Hello World”,是不可改变的 变量可以给个变量名,假如为name,值是可变的

2、变量注意事项 变量命名规则:必须由大写字母、小写字母、下划线、数字,并且首字 母不能是数字 在变量命名时:建议也简写出该变量是什么用处

变量值的类型:值的类型会分为整型、浮点型、字符串型、布尔型等, 而且使用变量需要指定类型Shell 默认的变量类型都是字符串,无需指 定类型

3、变量的分类 (1)自定义变量 由用户自己定义、使用和修改

变量名=值中,等于号=之前和之后不能有空格,比如:name = yang, 这样是错的,name=yang 才对 变量名=值中,值内如果输入数学算式,是没办法算出结果的,只会输 出字符串。

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

$PWD

$SHELL

$USER

$PATH

其中PATH变量用于设置可执行程序的默认搜索路径,可以修改全局变 量文件/etc/profile 或修改某用户家目录下的~/.bash_profile文件永久改 变环境变量。

(3)位置变量 通过命令行给脚本程序传递参数 (也属于预定义变量) 为了在使用Shel脚本程序时,方便通过命令行为程序提供操作参数, Bash引入了位置变量的概念位置变量有 ,n,n为1~9之间的数字 $0:第一个字段表示命令名或脚本名称 $1:脚本要处理的第一个参数 $2:脚本要处理的第二个参数 .... Shell脚本最多可以直接处理9个参数

(4)预定义变量 Bash中内置的一类变量,不能直接修改 预定义变量是Bash程序预先定义好的一类特殊变量,用户只能使用预定 义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。

$*:将所有参数作为整体

[root@localhost shell]# vim ip.sh #!/bin/bash ifconfig $1 | grep -w inet | awk '{print $2}' # 设置⼀个参数 :wq

[root@localhost shell]# sh ./ip.sh ens32 192.168.100.100

[root@localhost shell]# vim ip.sh #!/bin/bash ifconfig $1$2 | grep -w inet | awk '{print $2}' # 设置两个参 数 :wq

[root@localhost shell]# sh ./ip.sh ens 32 192.168.100.100 [root@localhost shell]#

$@:单个参数的组合,每个参数占一行

$0:保存了脚本名称

$?:保存命令或脚本的执行状态码

$#:保存脚本要处理的参数的个数

4、变量的定义与输出

(1)定义一个新的变量 格式:变量名=变量值 注意:变量名必须以字母或下划线开头,严格区分大小写

(2)变量符号运用

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

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

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

5、变量的作用范围 默认情况下,新定义的变量只在当前Shell环境中有效,因此称为局部变 量。当进入子程序或新的子shell 时,局部变量将无法再使用。 为了使用户定义的变量在所有子Shell环境中能够继续使用,减少重复设 置工作,可以通过内部命令export将指定的变量导出为“全局变量”。

格式 1:export 变量名

格式 2:export 变量名=值

6、变量的数学运算

(1)整数运算 格式:expr 变量1 运算符 变量2 运算符 变量3....

运算符:+ - * /(+ - × ÷)

标签:脚本,Shell,变量,编程,sh,shell,root
From: https://blog.csdn.net/m0_72009757/article/details/140716697

相关文章

  • 模块3 面向对象编程高级 --- 第八章:实现继承
    第八章实现继承主要知识点1、继承的概念2、继承的实现3、用this和super关键字实现继承4、抽象类的实现学习目标掌握继承和抽象类的定义和实现方法。借助集成,可以扩展原有的代码,应用到其他程序中,而不必要重新编写这些代码。扩展声明的新类称为子类,原有......
  • sqlserver --日常使用脚本
    ----------------------------------------------------------------------------------------------------------Description:sqlserver常用脚本:--------------------------------------------------------------------------------------------------------SELECTT.text,P.q......
  • 运行 Spark-Shell 程序时出现错误
    我正在尝试创建SparkShell程序,但在运行时出现错误。下面是我正在执行的代码。frompyspark.sqlimport*frompysparkimportSparkConffromlib.loggerimportLog4j#conf=SparkConf()#conf.set("spark.executor.extraJavaOptions","-Dlog4j.configuration=f......
  • windows bat脚本睡眠等待
    方法1:使用timeout命令在指定的时间内等待命令提示符或批处理脚本。时间以秒为单位定义。例如等待5秒钟使用。使用/T选项:c:/>timeout/T5您还可以直接指定秒,例如:c:/>timeout5上面的命令将在按任意键时中断超时过程。您可以使用/NOBREAK忽略按键并等待指定的时间。......
  • 为什么我的 Python 脚本失败并出现 TypeError?
    我正在编写一个Python脚本,该脚本应该计算数字列表的总和。但是,当我运行代码时遇到TypeError这是一个最小的例子:numbers=[1,2,3,'4']total=sum(numbers)print(total)Theerrormessageis:TypeError:unsupportedoperandtype(s)for+:'int'and'str......
  • Python 中的面向对象编程
    一.介绍在本文中,我们将使用Python中的类和对象来探索基本的OOP概念。面向对象编程(OOP)是一种强大的方法,可帮助开发人员组织代码,使其易于理解、重用和维护。Python是一种灵活的语言,可以很好地支持OOP概念。1.类和对象类是创建对象的蓝图。它定义了该类的对象将......
  • 免费分享一套微信小程序投票评选系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本
    大家好,我是java1234_小锋老师,看到一个不错的微信小程序投票评选系统(SpringBoot后端+Vue管理端),分享下哈。项目视频演示【免费】微信小程序投票评选系统(SpringBoot后端+Vue管理端)Java毕业设计_哔哩哔哩_bilibili项目介绍社会发展日新月异,用计算机应用实现数据管理功能......
  • 电脑脚本通杀器,能破市面上百分之80的脚本
    1.引言自动化脚本在现代软件开发和测试中扮演着重要角色。万能脚本通杀器作为一款电脑脚本自动化工具,旨在简化用户操作,提高工作效率。2.软件功能多功能性:能够执行多种类型的脚本任务,满足不同场景下的需求。易操作性:提供详细的操作教程,帮助用户快速上手。3.产品包含详......
  • 计算机毕业设计django+vueblockly少儿编程在线学习网站【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化教育日益普及的今天,少儿编程教育作为培养学生逻辑思维、创造力和解决问题能力的重要手段,正受到越来越多的关注和重视。然而,传统的......
  • Oracle数据库状态信息自动化收集脚本
    #!/bin/bash#配置变量ORACLE_SID=CDBORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1PATH=$ORACLE_HOME/bin:$PATHexportORACLE_SIDORACLE_HOMEPATH#数据库登录信息DB_USER=lcsdbDB_PASS=123456PDB_NAME=FS3_LCS#输出文件OUTPUT_DIR=/path/to/output/dire......