脚本

脚本

什么是脚本

脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言, 用来控制软件应用程序,脚本通常是以文本 (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
 ;;
...
*)
 默认分支
 ;;

posted @ 2024-05-14 19:27  红荼  阅读(6)  评论(0编辑  收藏  举报