首页 > 系统相关 >shell自定义变量

shell自定义变量

时间:2023-11-03 12:35:28浏览次数:29  
标签:shell 变量 自定义 echo sh 参数 var

自定义变量

自己定义的变量

自定义变量分类:

  • 自定义局部变量

    • 只能在一个脚本文件中使用的变量

      定义使用:

      不能以数字开头

      var_name=value
      

      等号两侧不能有空格

      bash中默认的类型为字符串类型,无法直接数值运算

      变量值有空格,必须使用双引号

      不能使用关键字

  • 自定义常亮

  • 自定义全局变量

查询变量值

1.$变量名
2.${变量名}  #适合拼接字符串

变量的删除

unset 变量名

自定义常量(只读变量)

语法

readonly 变量名

​ 父子shell环境

两个脚本文件;A.sh和B.sh;

在A的脚本中执行了B脚本文件,那么A就是父shell环境,B就是子shell环境

自定义全局变量 就是在当前脚本文件中定义的全局变量,也可以在shell子环境中使用

自定义全局变量

export var_name1 var_name2     #可以设置多个全局变量

测试全局变量在子shell中是否可以使用,

创建两个脚本文件;demo1.sh demo2.sh

编辑两个脚本文件;

在demo1中创建全局变量;在demo2 中打印全局变量;执行父shell

demo1.sh

#!/bin/bash
export var1=13
bash demo2.sh

demo2.sh
#!/bin/bash
echo $var1



特殊符号变量

常用的特殊变量

$n
$n
用于接收脚本文件执行时传入的参数;
$0,用于获取当前脚本文件名称;
$1-$9代表获取第一个参数到第9个参数
10个参数以上的格式
${数字},否者无法获取;

执行脚本文件传入参数语法

sh 脚本文件 参数1 参数2 ...

案例

打印脚本文件名字,和后面的输入参数;

#!/bin/bash
echo $0
echo $1
echo ${10}

$#

获取所有输入参数的个数;

$#
echo $#

$*

$@

上述两者的区别;

都是获取所有的输入参数,用于以后输出所有参数;(没有$0)

  • 不使用双引号括起来,功能一样 ;

格式为$1 $2 ...

  • 使用双引号括起来

​ "$*"获取的参数拼接成一个字符串"$1 $2 ..."

​ "$@"获取一组参数列表对象,:"$1" "$2" ..;;

使用循环打印看出区别

for var in 变量列表
do 
命令
done
##结束循环
#!/bin/bash
echo "循环遍历所有参数@"
for var in "$@"
do 
        echo $var
done

echo "循环遍历所有参*"
echo "循环遍历所有参数*"
for var in "$*"
do 
        echo $var
done

e

$?

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

每一个shell命令都有一个返回值;

用于说明命令是否执行成功;

一般返回值为0代表成功;非0 代表失败

$$

用于获取当前shell进程的ID号

$$

标签:shell,变量,自定义,echo,sh,参数,var
From: https://blog.51cto.com/u_16182563/8163563

相关文章

  • React 中设置环境变量(开发环境、测试环境和生产环境)
    React中设置环境变量(开发环境、测试环境和生产环境)环境React,Umi框架 1. 安装插件:cross-envnpmicross-env-S  2. 修改 package.json 文件"scripts":{"dev":"cross-envREACT_APP_ENV=devumidev","dev:prod":"cross-envREACT......
  • 机器学习——自定义层
    深度学习成功背后的一个因素是神经网络的灵活性:我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。有时我们会遇到或要自己发明一个现在在深度学习框架中还不存在的层。在这些情况......
  • java基础学习:path,java_home环境变量配置
    1.path变量: 装jdk后会自动配置java和javac的path路径 2.JAVA_HOME环境变量:   ......
  • [Linux] shell编程之数组 [转载]
    1概述数组是Shell的一种特殊变量,是一组数据的集合,里面的每个数据被称为一个数组元素。当前Bash仅支持一维索引数组和关联数组,Bash对数组的大小没有限制。2定义数组2.1一维索引数组方法1#定义一个空数组array=()#为数组元素赋值array1[0]=aarray1[1]=barray......
  • 11类型别名和自定义类型
    Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。类型别名和自定义类型自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键......
  • 博客园自定义主题教程
    https://www.cnblogs.com/cainiao-chuanqi/p/11388719.htmlhttps://blog.csdn.net/cxyliangzai/article/details/125094052?spm=1001.2101.3001.6650.8......
  • 【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext'
    问题描述AzureWebJob执行Powershell脚本报错 Select-AzContext:Theterm'Select-AzContext'isnotrecognizedasthenameofacmdlet,function,scriptfile,oroperableprogram.Checkthespellingofthename,orifapathwasincluded,verifythatthepa......
  • 3.环境变量
    3.环境变量系统环境变量:常用的系统环境变量:变量:用于存储管理临时的数据;这些数据都是在运行内存中变量类型;系统环境变量是系统提供的共享变量,是linux系统中加载shell配置文件中定义的变量给所有的shell程序使用;自定义变量特殊符号变量​配置文件全局配置......
  • 项目jar部署启停shell脚本
    #!/bin/bashAPP_NAME=bixi-admin.jarAPP_DIR=`pwd`usage(){echo"Usage:shstartup.sh[start|stop|restart|status]"exit1}is_exist(){pid=`ps-ef|grep$APP_NAME|grep-vgrep|awk'{print$2}'`echo"aaaa:${pid}"if......
  • jdk环境变量JAVA_HOME修改不生效问题
    近段因一个软件问题,软件需要使用jdk1.7的环境,我现在使用的是1.8,所以下载了jdk1.7,然后将环境变量JAVA_HOME改为了1.7的路径信息然后查看jdk版本还是1.8版本,就很奇怪,为什么修改了环境变量没生效呢?解决方式一:将系统变量path中JAVA_HOME中这一项移动到最上面解决方式二:当使用安装版本......