shell变量和引用
创始人
2024-06-02 17:58:24
0

目录

什么是变量?

 变量的类型(注:可使用env或者set查看环境变量 )

根据数据类型分类

根据作用域分类

定义环境变量需要四个文件夹

用户登录过程如下:

问题

1.如果我要配置一个只针对root用户的环境变量,应该配置在什么地方2.如果我要配资一个针对所有用户的环境变量,应该配置在什么地方

 解答

root:~/.bash_profile或者~/.bashrc所有:/etc/profile或者/etc/bashrc 或者在/etc/profile.d目录中去定义.sh文件

定义环境变量的方式:

变量的定义

shell变量符号对照表https://blog.csdn.net/thy822/article/details/71775603

shell常用变量符号

练习:建立一个脚本:args_script.shbash args_script.sh 传递6个参数1.获取参数的个数2.获取所有的参数3.获取1,3,5这个三个位置的参数4.获取脚本的名字 

shell中的引用

 变量的运算

 原码、反码、补码是计算机中对数字的二进制表示方法。


什么是变量?

顾名思义,变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。几乎所 有的程序设计语言中都有定义变量,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户 数据的一块内存空间,而变量名就是这块内存空间的地址。 在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的 变量名却保持不变

 变量的类型(注:可使用env或者set查看环境变量

根据数据类型分类

Shell是一种动态类型语言和弱类型语言,即在Shell中,变量的数据类型毋需显示地声明,变量的 数据类型会根据不同的操作有所变化。准确地讲,Shell中的变量是不分数据类型的,统一地按照字符串 存储。但是根据变量的上下文环境,允许程序执行一些不同的操作,例如字符串的比较和整数的加减等 等。 什么是弱类型语言、强类型语言? 强类型和弱类型主要是站在变量类型处理的角度进行分类的。强类型是指不允许隐式变量类型转换,弱 类型则允许隐式类型转换。 强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远 都是这个类型,如果把它当做其他类型来用,就会报错 弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐 式)转换。 比如: C语言定义变量,int+变量名,实则前面的int就是给变量内存划分了等级,int定义整型所以空间里 只能存放整型,这就是强类型。php、C#和Python等都是强类型语言。 可以使用declare定义变量的类型:declare attribute variable注:declare命令还可输出所有的变量、函数、整数和已经导出的变量 -p:显示所有变量的值 -i:将变量定义为整数,在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整 数,就设置为0。 -r:将变量声明为只读变量。只读变量不允许修改,也不允许删除。(也可使用readonly定义只读变量) -a:变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。事实上,在某 种意义上,似乎所有变量都是数组,而且赋值给没有下标的变量与赋值给下标为0的数组元素相同。 -f:显示所有自定义函数,包括名称和函数体。 -x:将变量设置成环境变量。可使用+x将变量变成非环境变量

根据作用域分类

可将变量分为环境变量(全局变量)和普通变量(局部变量) 1、环境变量 环境变量也可称为全局变量,可以在创建它们的shell及其派生出来的任意子进程shell中使用su - 切换用户会读取新的环境变量),环境变量又可分为自定义环境变量和bash内置的环境量。 1)自定义环境变量 一般是指用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行。境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,即该环境变量只在当前 shell和子shell中有效。如果希望永久保存环境变量,可以在配置文件中设置。 ①用户的环境变量配置(non-login shell) ~/.bash_profile或~/.bashrc ②全局环境变量的配置(login shell) /etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义。 注意:按照系统规范,所有环境变量的名字均采用大写形式。在将环境变量应用于用户进程程序之前,都应该用 命令export导出。 有一些环境变量,比如HOME,PATH,SHELL,UID,USER等,在用户登录前就已经被/bin/login程序设置 好了,通常环境变量被定义并保存在用户家目录下的.bash_profile文件或全局的配置文件/etc/profile 中 2)bash内置的环境变量 shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接收一组变量 来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。环境变量会影响到所 有的脚本的执行结果。

定义环境变量需要四个文件夹

~/.bash_profile
~/.bashrc
/etc/profile
/etc/bashrc

用户登录过程如下:

在/etc/profile有一条:    . /etc/bashrc -》 要去执行/etc/bashrc

                                    /etc/profile.d/*.sh  . "$i" -> 也要去执行/etc/profile.d/*.sh的文件

在~/.bash_profile中:
   . ~/.bashrc

在~/.bashrc中:
. /etc/bashrc

在/etc/bashrc -> 会执行/etc/profile.d/*.sh文件

问题

1.如果我要配置一个只针对root用户的环境变量,应该配置在什么地方
2.如果我要配资一个针对所有用户的环境变量,应该配置在什么地方

 解答

root:~/.bash_profile或者~/.bashrc
所有:/etc/profile或者/etc/bashrc 或者在/etc/profile.d目录中去定义.sh文件

定义环境变量的方式:

1. export mydata2=mydata2
2. mydata=mydata;export mydata
3. declare -x mydata3=mydata3

变量的定义

shell变量符号对照表https://blog.csdn.net/thy822/article/details/71775603

Shell符号及各种解释对照表_thy822的博客-CSDN博客

shell常用变量符号

1)“=”前后不能有空格

2)字符串类型建议用引号括起来,尤其是特殊字符或有空格 引用变量:$变量名 或者${变量名} 查看变量:echo $变量名,set(可查看所有变量:包括自定义变量和环境变量),env显示全局变量, declare输出所有的变量、函数、整数和已经导出的变量。 取消变量:unset 变量名 作用范围:仅在当前shell中有效 注:可使用export指令将变量转换成环境变量
位置参数和预定义变量
许多情况下,Shell脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。 从命令行传递给Shell脚本的参数又称为位置参数,Shell脚本会根据参数的位置使用不同的位置参数变量 读取它们的值。

[root@localhost test]# vim param.sh echo "第1个位置参数是$1" echo "第2个位置参数是$2" echo "所有参数是: $*" echo "所有参数是: $@" echo "参数的个数是: $#" echo "当前进程的PID是: $$" [root@localhost test]# bash param.sh shuju1 shuju2 第1个位置参数是shuju1 第2个位置参数是shuju2 所有参数是: shuju1 shuju2 所有参数是: shuju1 shuju2 参数的个数是: 2 当前进程的PID是: 23278

练习:建立一个脚本:args_script.sh
bash args_script.sh 传递6个参数
1.获取参数的个数
2.获取所有的参数
3.获取1,3,5这个三个位置的参数
4.获取脚本的名字 

 

shell中的引用

在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通 字符来处理说明:(说明:反引号中的字符串将被解释为shell命令

 变量的运算

与其他的程序设计语言一样,shell也有很多运算符。

 原码、反码、补码是计算机中对数字的二进制表示方法。

原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

反码:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码表示形式。

补码:如果是正数,则表示方法和原码一样;如果是负数,则将数字的反码加上1(相当于将原码数值位取反然后在最低位加1)。

总结:正数的原码、反码、补码完全一样,只有负数需要按照以上规则计算。
 

相关内容

热门资讯

安卓挖煤模式重置系统,系统重置... 手机突然卡壳了,系统也变得不认路了,你是不是也遇到了这样的烦恼?别急,今天就来给你揭秘安卓手机的“挖...
安卓系统8和5,跨越时代的系统... 你有没有发现,手机里的那个安卓系统,就像是我们的好朋友,总在默默无闻地陪伴着我们。今天,咱们就来聊聊...
安卓系统程序自启动,安卓系统程... 你有没有发现,你的安卓手机有时候就像一个超级忙碌的小蜜蜂,不管你开不开它,它总是自顾自地忙碌着。这就...
安卓系统是什么操作系统,引领移... 亲爱的读者们,你是否曾在手机上看到过“安卓”这个词,却对它一知半解呢?今天,就让我带你一起揭开安卓系...
谷歌收购安卓1.0系统,开启移... 你有没有想过,现在我们手上的智能手机,曾经可是掀起了一场科技革命呢?没错,就是那个改变了我们生活的安...
鸿蒙系统和安卓游戏,畅享无缝跨... 亲爱的读者们,你是否也像我一样,对华为的鸿蒙系统和安卓游戏之间的兼容性充满好奇呢?今天,我就要带你深...
安卓系统开源字体设置,个性化与... 你有没有发现,手机上的字体有时候真的让人提不起精神?别急,今天就来教你怎么给安卓手机换上自己喜欢的开...
电视系统安卓易柚,康佳电视的智... 亲爱的读者们,你是否曾为家里的电视系统而烦恼?市面上那么多选择,到底哪个最适合你呢?今天,就让我带你...
修改安卓系统全局字体,安卓系统... 你有没有发现,手机里的字体有时候真的让人提不起精神?是不是也想给手机换换新装,让它看起来更有个性呢?...
安卓系统做电脑u盘系统,电脑U... 你有没有想过,用安卓系统来装电脑U盘?听起来是不是有点酷炫?没错,现在就有这么一个神奇的方法,让你不...
安卓 双核 双系统,探索安卓双... 你有没有想过,你的手机可以同时拥有两个不同的世界呢?没错,就是安卓双核双系统!想象一边是熟悉的安卓世...
安卓原生系统 充电模块,揭秘高... 你有没有发现,现在手机充电速度简直就像赛跑一样,快得让人眼花缭乱!不过,你知道吗?安卓原生系统在判定...
安卓系统换成苹果键盘,轻松切换... 亲爱的手机控们,是不是觉得安卓手机的键盘有点单调,而苹果手机的键盘又那么吸引人呢?别急,今天就来教你...
安卓系统适配键盘丝印,安卓系统... 你有没有发现,用安卓手机打字的时候,有时候键盘上的字母会变得模糊不清,甚至有时候还会出现错别字呢?这...
安卓系统双开封号,揭秘安卓系统... 安卓系统双开封号:揭秘背后的风险与机遇在数字化时代,手机已经成为我们生活中不可或缺的一部分。而在众多...
安卓11系统的nfc,Andr... 你有没有发现,现在手机的功能越来越强大了?尤其是安卓11系统的NFC功能,简直就像是个贴心的智能小助...
安卓系统怎么拍摄屏幕,轻松捕捉... 亲爱的手机控们,你是否有过这样的时刻:想要记录下手机屏幕上的精彩瞬间,却不知道怎么操作?别急,今天就...
安卓开发KTV点歌系统,基于安... 你有没有想过,在家就能享受到KTV的乐趣?现在,这不再是梦想啦!随着科技的发展,安卓开发KTV点歌系...
苹果手机安卓系统办公,智能手机... 你有没有发现,现在不管是上班还是出差,手机已经成了我们办公的小助手啦!尤其是苹果手机和安卓系统,它们...
字体怎么安装安卓系统,轻松实现... 你有没有想过,你的安卓手机字体是不是有点单调呢?想要给手机换上新的字体,让它看起来更有个性?别急,今...