shell的自定义变量

简介: shell的自定义变量

shell的自定义变量



目标


理解自定义变量的分类


能够自定义变量进行增删改查


自定义变量介绍:就是自己定义的变量


自定义变量1—局部变量


介绍:就是定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量就是绝不变量
定义语法:var _name=value
变量定义规则
  1.变量名称可以由字母数字下滑线,但是不能以数字开头
  2.等号两侧不能有空格
  3.在bash环境中,变量的默认类型都是字符创类型,无法直接进行数值计算
  4.变量的值如果有空格必须使用双引号括起来
  5.不能使用shell的关键字为变量名称


查询变量值的语法


  语法1:直接使用变量名查询 $name
  语法2:使用花括号${name}
  区别:花括号方式适合拼接字符串
  eg: var name=张三 
      echo $name123 无法使用 
      echo ${name}123 输出 张三123


删除变量的语法


unset 变量名
• 1


自定义变量2—常量


介绍:就是变量设置值之后不可以修改的变量叫常量 也叫只读变量
语法:readonly name=张三


自定义变量3—全局变量


父子shell环境介绍
  eg:有两个shell脚本文件a.sh和b.sh,如果a.sh脚本文件中执行了b.sh脚本文件,那么a.sh就是父shell环境,b.sh就是子shell环境
自定义全局变量介绍:就是在当前脚本文件中定义全局变量,这个全局变量可以在当前shell环境与子shell环境中都可以使用.
语法:export name1 name2=value


案例实现步骤


1.创建2个脚本文件demo2.sh和demo3.sh
2.编写demo2.sh
  命令1:定义全局变量var4
  命令2:执行demo3.sh脚本文件
3.编写demo3.sh脚本文件
    输出全局变量var4
4.执行demo2.sh脚本文件


代码如下


touch demo2.sh demo3.sh
vim demo2.sh
  #!/bin/bash
  export var4=value
  sh demo3.sh
vim demo3.sh
  #!/bin/bash
  echo "输出全局变量var4的值为${var4}"
sh demo3.sh


特殊符号变量



目标
  能够说出常用的特殊变量有哪些 $n $# $* s@ $? $$
• 1
• 2


特殊变量$n


语法:$n
$0是用于获取当前脚本文件名称的 
$1-$9代表获取第一输入参数到第九个输入参数,第十个及以上的输入参数获取的格式是${10},否则无法获取
执行脚本文件传入参数语法
  sh 脚本文件 输入参数1 输入参数2 ....


案例需求:打印脚本文件名字,第一个输入参数,第二个输入参数


1.创建脚本文件demo4.sh
2.编辑demo4.sh的文件内容
 打印当前脚本文件的名字
 打印第一个输入参数
 打印第二个输入参数
 打印第十个输入参数
3.执行脚本文件demo4.sh
touch demo4.sh
vim demo4.sh
  #!/bin/bash
  echo "当前脚本文件名称:$0"
  echo "第一个输入参数$1"
  echo "第二个输入参数$2"
  echo "第十个输入参数${10}"


特殊符号变量 $#


语法:$#
含义:获取所有输入参数的个数
• 1
• 2


案例需求:获取demo4.sh中输入参数的个数


vim demo4.sh
  echo "输入参数的个数为:$#"


特殊符号变量 $* $@


含义:都是获取所有输入参数,用于以后输出所有参数
区别:
  1.不使用双引号括起来,功能一样
    $*和$@获取所有输入参数,格式为:$1 $2 ....$n
  2.使用双引号括起来
    "$*" 获取所有参数拼接为一个字符串,格式为:"$1 $2 ... $n"
    "$@" 获取一组参数列表对象,格式为:"$1" "$2"..."$n"
    使用循环打印所有输入参数可以看出区别
循环语法: for var in 列表变量
         do  #循环开始
          命令 #循环体
         done #循环结束


案例需求:在demo4.sh 脚本文件中循环打印输出所有输入参数,体验∗ 和 *和∗和@区别

image.png

image.png


特殊符号变量$?


含义:用于获取上一个shell命令的退出状态码,或者是函数的返回值
  解释:每个shell命令的执行都会有一个返回值,这个返回值用于说明命令执行是否成功.一般来说返回0代表命令执行成功,非0代表失败


特殊符号变量$$


含义:用于获取当前shell环境的进程id号
• 1


小结



$n 获取第几个输入参数 除了$0外 因为$0是获取当前shell脚本的名字
$# 获取输入参数个数
$* $@ 获取输入参数 
$?获取上个shell退出状态码或者函数返回值
$$获取shell环境的进程id
目录
相关文章
|
4月前
|
Shell Linux
|
4月前
|
Shell Python
python 和shell 变量互相传递
python 和shell 变量互相传递
48 0
|
4月前
|
Unix Shell
Linux--自定义shell
Linux--自定义shell
|
4月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
92 0
|
15天前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
37 5
|
16天前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
25 0
|
1月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
109 1
|
2月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
36 10
|
4月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
68 2
|
2月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别