Shell脚本2

news/2024/11/1 18:26:44/

自定义局部变量

:定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量,局部变量

语法: var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头

  2. 等号两侧不能有空格

  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算

  4. 变量的值如果有空格, 必须使用双引号括起来

  5. 不能使用Shell的关键字作为变量名称

如:var1=it

变量查询:

  echo $var_name

  echo ${var_name}        花括号适合拼接字符串1

如:echo $var1

输出        it

        echo "my name is ${var1}123"

输出        my name is it123

变量删除:

unset var_name

自定义常量

:变量设置值以后不可以修改的变量叫常量 ,只读变量

readonly var_name

如:var3=itt

        readonly var3        设置var3为只读变量

        var3=qqq                无法修改只读变量

自定义全局变量

:在当前脚本文件中定义全局变量,

这个全局变量可以在当前shell环境与子shell环境中都可以使用

父子shell环境

:由两个shell脚本文件 A.sh B.sh ,在A.sh脚本文件中执行B.sh脚本文件,

A.sh就是父shell环境,B.sh就是子shell环境

全局变量语法: export var_name1 var_name2

案例:测试全局变量在子shell中是否可用 在父shell中是否可用

需求:        1、创建2个脚本文件 demo2.sh demo3.sh

                        touch demo2.sh demo3.sh

                2、编辑demo2.sh       

                        vim demo2.sh

                        命令1:定义全局变量 var4       

                        var4=itt

                        export var4

                        命令2:执行demo3.sh脚本文件       

                        sh demo3.sh

                3、编辑demo3.sh

                        vim demo3.sh

                        输出全局变量var4

                        echo "在demo3.sh文件中输出var4变量:${var4}"

                4、执行demo2.sh脚本文件

                        sh demo2.sh

结论:全局变量在当前shell环境与子shell环境中可用,父shell环境中不可用

特殊变量        $n

:用于接收脚本文件执行时传入的参数

$0 获取当前脚本文件名

$1-$9 获取第1个到第9个输入参数

${数字} 获取第10个及以上的输入参数

执行脚本文件 传入参数语法         sh 脚本文件 参数1 参数2 ......

案例:创建脚本文件demo4.sh 在脚本文件内部执行打印脚本文件名字、参数

需求:        1、touch demo4.sh

                2、编辑demo4.sh文件内容

                #!/bin/bash

                #命令1 打印当前脚本文件

                echo "当前脚本文件名称:${0}"

                #命令2 打印第1个输入参数

                echo "第1个输入参数:${1}"

                #命令3 打印第2个输入参数

                echo "第2个输入参数:${2}"

                #命令4 打印第10个输入参数

                echo "第10个输入参数不带花括号:$10"        获取结果不一样 相当于 $1 拼接上 0

                echo "第10个输入参数带花括号:${10}"

                3、执行脚本文件demo4.sh

特殊变量 $#        获取所有输入参数的个数

特殊变量 $* $@        获取所有输入参数 用于输出所有参数

1、不用双引号括起来, 功能一样
          $*和$@获取所有输入参数,格式为: $1 $2 ... $n
2、使用双引号括起来
          "$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
          "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
  使用循环打印所有输入参数可以看出区别

for var in 列表变量
do        # 循环开始
   命令  # 循环体
done    # 循环结束

# 增加命令: 实现直接输出所有输入后参数
echo '使用$*直接输出:'$*
echo '使用$@直接输出:'$@

# 增加命令: 使用循环打印输出所有输入参数
echo '循环遍历输出$*所有参数'
for item in "$*"
do
   echo $item
done
echo '循环遍历输出$@所有参数'
for item in "$@"
do
   echo $item
done

特殊变量 $?

用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功

一般来说, 返回0代表命令执行成功, 非0代表执行失败

特殊变量 $$

用于获取当前Shell环境的进程ID号

查看shell环境的进程号        ps -aux | grep bash

        echo $$        显示当前shell环境的进程编号

 


http://www.ppmy.cn/news/60522.html

相关文章

二叉树(纲领篇)

文档阅读 文档阅读 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。 2、是否可以定义一个递归函数,通过子问题&a…

【pinia】新一代更好用的状态管理器Pinia

目录 一,Pinia状态管理库 1.Pinia介绍 2.Pinia的核心特性 3.核心概念 4.Pinia vs Vuex 5.Pinia & Vuex的不同 6.Pinia名字 二,Pinia基本使用 1.安装Pinia 2.配置main.ts文件 3.创建store/index.ts文件 4.使用数据 三,状态更新…

爬虫实验笔记

这里的爬虫实验害暂时没有遇到验证码等问题,步骤可以简单概括为: 1.找到爬虫必要的信息; 2.内容提取; 3.将提取到的内容保存至xlsx文件 1.找到爬虫必要的信息 以zh为例,首先找一个自己感兴趣的贴,进入开…

数据结构之队列,实现队列的增删改查

目录 一、队列的定义 二、队列的实现 1.使用链表来实现队列 2.实现队列的接口 初始化队列 void QueueInit(Queue *pq) 队尾入队列 void QueuePush(Queue *pq,QDataType data) 队头出队列 void QueuePop(Queue *pq) 获取队列头部元素 QDataType QueueFront(Queue *pq) …

java学习之异常二

目录 一、异常处理机制 一、try-catch-finally 二、throws 二、try-catch 异常处理使用细节 三、try-catch-finally练习 第一题 第二题 第三题 第四题 一、异常处理机制 共有两种异常处理机制 一、try-catch-finally 处理机制图示 二、throws 关于第二点,如E…

Android性能监控:主循环性能统计LooperStatsService详解

作者:飞起来_飞过来 简介 在Android性能监控和优化领域,一个会影响App性能表现的因素与Handler Message Looper机制有关。当Looper里面的Message处理不及时、或数量太多占用过多处理时间时,可能会出现卡顿感,并且不容易定位到卡顿…

苦学58天,最后就这结果......

背景 非计科大专一枚,当初学的机械自动化专业。大学完全可以说是玩过来的,临近毕业开始慌了,毕业后一直没能找到工作,在高中同学(211 计科)的引领下,入坑程序员,学的软件测试。 从…

Unity如何上传一个文件到服务器

在游戏开发过程中,有时候需要上传一些文件到远程服务器上,比如游戏资源文件、玩家数据等等。在Unity中,我们可以使用UnityWebRequest类来实现文件上传功能。本文将详细介绍Unity如何上传一个文件到服务器,并给出Unity与服务器的核…