首页 > 其他分享 >脚本

脚本

时间:2024-05-14 19:30:35浏览次数:20  
标签:脚本 变量 echo localhost root bash

脚本

什么是脚本

脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言, 用来控制软件应用程序,脚本通常是以文本 (ASCⅡ) 保存,只是在被调用时进行解释或者编译。

构成

脚本的编写都是采用某一种编程语言;如:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,Python,Ruby,JavaFX,Lua,AutoIt

常用的脚本语言为:Python;C;C++;java等

shell脚本

Shell 脚本,是一种为 Shell 编写的脚本程序,类似 Windows的 bat 脚本,区别在于 bat 是用于操作 [Windows ](https://baike.baidu.com/item/Windows /165458?fromModule=lemma_inlink)操作系统,而 Shell 脚本用于操作 Linux 系统。

shell脚本的组成

  1. 脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python #!/bin/expect
  2. 注释信息:以#开头的语句表示为注释信息 # 注 释
  3. 可执行语句:比如echo命令用于输出“ ”之间的字符串

脚本执行逻辑

  1. 顺序执行:程序按从上到下顺序执行

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

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

执行方式

1.指定路径去执行文件(需要有执行权限)

[root@localhost ~]# chmod +x /root/host.sh    加权限
指定相对路径./host.sh
指定绝对路径/root/host.sh

2.指定shell解释器(bash)去执行(不需要权限)

[root@localhost data]# bash yum.sh
#使用bash来执行写的脚本
#bash是新开一个bash来执行

3.source / . (点=source)(不需要权限)

[root@localhost data]# source yum.sh
#使用source/.来执行写的脚本
#source/. 是在本bash执行脚本

变量

变量的定义

什么是变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。
变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。

如何定义变量

定义变量的过程涉及确定变量的类型、名称、以及可能的初始值。

变量类型:首先,需要确定变量的类型,这决定了变量能够存储的数据类型,如整数、浮点数、字符串等。不同类型的变量在内存中占用的空间大小不同,且能够存储的数据类型也不同。

变量名称:其次,给变量一个名称,这个名称用于在代码中引用该变量。变量名应该具有描述性,能够清晰地表达变量的用途或含义。

初始值:在定义变量时,可以为其指定一个初始值。这个值是变量在程序开始时或被创建时的初始状态。如果未指定初始值,则变量的值可能为空或不确定。

在shell中定义变量
[root@localhost ~]# name='value'  	#变量名=变量值
[root@localhost ~]# echo "$name"	#用echo "$变量名"
value
[root@localhost ~]#unset 变量名 	  #取消 变量
注意:变量赋值是临时生效,当退出终端后,变量会自动删除,无法持久保存,脚本中的变量会随着脚本结束,也会自动删除

[root@centos8 ~]#TITLE=CTO			#变量名+=追加值
[root@centos8 ~]#TITLE+=:wang
[root@centos8 ~]#echo $TITLE
CTO:wang

变量的类型

环境变量

  1. 由系统提前创建,用来设置用户的工作环境
  2. 可以使用env查看环境变量
  3. 需要记住的常用环境变量

环境变量:

  • 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
  • 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程
  • 一般只在系统配置文件中使用,在脚本中较少使用
$USER 表示用户名称
[root@localhost ~]# echo "$USER"
root
$HOME 表示用户的宿主目录
[root@localhost ~]# echo "$HOME"
/root
$LANG 表示语言和字符集
[root@localhost ~]# echo "$LANG"
zh_CN.UTF-8
$PWD 表示当前所在工作目录
[root@localhost ~]# echo "$PWD"
/root
$PATH 表示可执行用户程序的默认路径
[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

只读变量

变量值不允许修改(重新赋值)的情况

无法使用 unset删除

最快方法重启

[root@localhost ~]# name=ky15
[root@localhost ~]# readonly name		#将变量设为只读变量
[root@localhost ~]# echo $name 
ky15
[root@localhost opt]# unset name
bash: unset: name: 无法反设定: 只读 variable
#只有退出进程。

位置变量

位置变量也称为位置参数,使用$1、$2、$3、…、$9 表示

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

预定义变量

bash 帮你定义好了 拿来用就可以了,你不需要知道为什么,记住

  • $*:表示所有位置参数的内容看成一个整体返回 返回所有
  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有
  • $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常
  • $#:表示命令行中位置参数的总个数
  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字
  • $$:当前bash的进程id
  • $!: 后台任务最后一个id

条件语句

if

用法:
单方支:

if     	命令;	 	then		命令; fi

双分支:

if 		命令;		then		命令;else	 	命令;fi

多分支:

if		命令;		then		命令;elif		命令;..............

else		命令;fi

case

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac

read -p          i

case $i in
PAT1)
 分支1
 ;;
PAT2)
 分支2
 ;;
...
*)
 默认分支
 ;;

标签:脚本,变量,echo,localhost,root,bash
From: https://www.cnblogs.com/zhj0708/p/18192069

相关文章

  • Mysql批量插入数据(python脚本)
    有个需求:需要在table1中插入205条数据,role_id固定为65,menu_id从91开始方法二:python脚本实现PyMySQL是一个纯Python编写的MySQL客户端库,用于连接和操作MySQL数据库。以下是PyMySQL的主要功能和优点:功能:数据库连接:PyMySQL提供了connect()方法,用于建立与MySQL数据库的连接。一旦......
  • Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
    前言我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright中也有类似的方法,使用page.evaluate()执行JavaScript脚本。page.evaluate()和page.evaluate_handle()之间的......
  • 使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 这里做AE(AdobeAfterEffact)里的脚本规则,把英文替换成中文,如下swap=thisComp.layer(“Segmentsettings”).effect("%")(“Checkbox”);if(swap==true){s=thisComp.layer(“Segmentsettings”).effect(“S......
  • Linux上执行内存中的脚本和程序
    在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Linux会在/proc/self/fd/<文件描述符>这个路径上创建一个对应描述符的......
  • 第一层flume采集脚本
    #!/bin/bash#1、判断参数是否传入if[$#-lt1]then echo"必须输入参数...." exitfi#2、根据参数匹配执行case$1in"start") forhostinhadoop102hadoop103 do echo"===========启动$host第一层flume采集==============" ssh$host"nohup/op......
  • 使用 Playwright 脚本录制简化自动化测试:完全指南
    前言自动化测试是软件开发中的重要环节,它可以提高测试效率和代码质量。然而,编写自动化测试脚本可能需要花费大量时间和精力。为了简化这一过程,Playwright提供了一个强大的功能,称为脚本录制,它可以帮助开发人员通过交互式操作自动生成测试脚本。本文将深入介绍如何使用Playwrigh......
  • autox.js脚本,采集抖音直播间评论信息
    autox.js脚本,采集抖音直播间评论信息auto();history={};console.show(true);while(true){listBox=className("androidx.recyclerview.widget.RecyclerView").findOne(2000);if(!listBox){continue;}allList=listBox.children();for(v......
  • autox.js脚本采集抓取抖音直播间弹幕评论
    利用autox.js识别抓取抖音直播间评论弹幕信息auto();history={};console.show(true);while(true){listBox=className("androidx.recyclerview.widget.RecyclerView").findOne(2000);if(!listBox){continue;}allList=listBox.children();f......
  • 在Linux中,如何编写自动化脚本来执行重复性任务?
    在Linux中编写自动化脚本执行重复性任务通常涉及以下步骤:1.确定任务需求首先,明确你想要自动化的任务是什么,以及任务的执行流程。例如,你可能想要自动化以下任务:定期备份文件。监控日志文件并发送警报。自动更新系统软件。定期清理临时文件。2.选择脚本语言选择适合你需......
  • 从油猴脚本管理器的角度审视Chrome扩展
    从油猴脚本管理器的角度审视Chrome扩展在之前一段时间,我需要借助Chrome扩展来完成一个需求,当时还在使用油猴脚本与浏览器扩展之间调研了一波,而此时恰好我又有一些做的还可以的油猴脚本TKScript(点个star吧......