Linux Shell 003-变量

Linux Shell 003-变量

本节关键字:Linux、Shell、变量、全局变量、系统变量
相关指令:read、echo、unset、export

变量的含义

  • 变量是用来临时保存数据的,该数据是可以变化的数据。
  • 如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容,这样在修改内容的时候,仅仅需要修改变量的值。
  • 在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。

变量的定义

定义变量:变量名=变量值
取消变量:unset 变量名
说明:变量名用来临时保存数据,变量值是临时的可变化的数据

变量的命名规则

  • 变量名区分大小写
  • 变量名不能有特殊符号
  • 变量名不能以数字开头
  • 等号两边不能有任何空格
  • 变量名尽量做到见名知意

变量的定义方式

基本定义方式,直接复制给一个变量
# $A与${A}的区别
A=12345
echo $A
echo ${A:2:3}# 将命令执行结果赋值给变量
A=`hostname`
A=$(uname -r)
交互式定义变量,使用read命令

语法

read [选项] 变量名

常用选项

选项说明
-p定义提示用户的信息
-n定义字符数
-s不显示用户输入的内容
-t定义超时时间,默认单位为秒

使用示例

$ read -p "Input your name:" name
$ read -s -p "input your password" passwd
$ read -s -n 5 -p "input your password" passwd
$ read -s -t 5 -n 5 -p "input your password" passwd
变量值来自文件,使用read命令

语法

read [选项] 变量名 < 文件名

使用示例

$ cat test
192.168.203.66 255.255.255.0
$ read ip mask < test
$ echo $ip
192.168.203.66
$ echo $mask
255.255.255.0
定义有类型变量 - 使用declare

语法

declare [选项] 变量名=变量值

常用选项

选项说明
-i将变量看成整数
-r定义只读变量
-a定义普通数组;查看普通数组
-A定义关联数组;查看关联数组
-x将变量通过环境导出,等价于export

使用示例

$ declare -i A=123
$ echo $A
123
$ A=hello
$ echo $A
0
$ declare -r B=hello
$ echo $B
hello
$ B=world
-bash: B: readonly variable
$ unset B
-bash: unset: B: cannot unset: readonly variable

变量的分类

本地变量

概念:当前用户自动以的变量,当前进程中有效,其他进程及当前进程的子进程无效

环境变量

概念:当前进程有效,并且能够被子进程调用(进程树 ps auxf | grep 进程名)

命令说明
env查看当前用户的环境变量
set查询当前用户的所有变量
export变量名=变量值 或者 变量名=变量值;export 变量名
全局变量

概念:全局所有的用户和程序都能调用,且集成,新建的用户也默认能调用
相关配置文件:

文件名说明
$HOME/.bashrc当前用户的bash信息,用户登录时读取,如:定义别名、umask、函数等
$HOME/.bash_profile当前用户的环境变量,用户登录时读取
$HOME/.bash_logout当前用户退出当前shell时读取,如:定义用户退出时执行的程序等
$HOME/.bash_history用户的历史命令,history -w 保存历史记录; history -c 清空历史记录
/etc/bashrc全局的bash信息,对所有用户都生效
/etc/profile全局环境变量信息,对系统和所有用户都生效

注意:以上文件修改后,都需要重新加载,可以使用source命令、.命令或退出重新登录,例如:

$ source $HOME/.bashrc
$ . $HOME/.bashrc
用户登录系统读取相关文件的顺序

(1)/etc/profile
(2)$HOME/.bash_profile
(3)$HOME/.bashrc
(4)/etc/bashrc
(5)$HOME/.bash_logout

系统变量

概念:内置bash中变量,shell本身已经固定好了它的名字和作用

内置变量
内置变量说明
$?上一条命令的执行结果,0表示执行成功,非0表示执行失败
$0当前执行的程序或脚本名称
$#脚本后面跟的参数个数
$*脚本后面所有参数,将所有参数当成一个整体输出,每个参数之间使用空格隔开
$@脚本后面所有参数,每个参数都是独立的,依次全部输出
$1-$9脚本后面的位置参数,$1表示第一个位置的参数
10 − {10}- 10{n}脚本后面的位置参数扩展,从第10个位置开始,后面的位置数字必须用大括号{}括起来(2为数字以上括起来)
$$当前进程的进程号
$!当前终端,后台运行的最后一个进程的进程号
!$调用历史最后一条命令中的参数

补充:转义字符为 \,查看后台运行的进程指令为jobs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java自动机实现

这篇文章将解决在Java中实现有限状态机的问题。 如果您不知道什么是FSM或在什么地方可以使用FSM&#xff0c;您可能会热衷于阅读此 &#xff0c; 这个和这个 。 如果您发现自己在设计上使用FSM的情况&#xff0c;则可能已经开始为实现相同接口的每个状态编写类。 一个好的设计可…

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files这个文件找不到

在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夹下面建立Temporary ASP.NET Files 文件夹&#xff08;Framework64 注意64&#xff0c;这个可能是我们用的64位系统&#xff0c;但是vs2010不分32位还是64位&#xff0c;所以在C:\Windows\Microsoft.NET\Framework\v4.0…

java电脑运行视频演示_javaweb视频第一天(二)

无论通过哪种方式得到的class类对象&#xff0c;是同一个。比较的是地址码这里教会你&#xff1a;如何去使用class对象现在就知道这个&#xff1a;如何使用反射&#xff0c;并且说反射是实现了什么样的功能。如何通过反射得到里面的相应字段&#xff0c;得到里面的相应函数等等…

模型驱动 ModelDriven

ModelDriven:模型驱动,对所有action的模型对象进行批处理. 我们在开发中&#xff0c; 在action中一般是用实体对象&#xff0c;然后给实体对象get&#xff0c;set方法。 RegAction{   User user ;   //get/set} 然后在jsp页面中给action中的user属性绑定值是通过如下方式 &…

本月风味– Neo4j和Heroku

Neo4j今年早些时候发起了一项挑战&#xff0c;即“ 种子播云 ”&#xff0c;以使人们使用Neo4j附加组件在Heroku上创建模板或演示应用程序。 经过许多内部辩论之后&#xff0c;我决定进入&#xff0c;但由于缺乏想法而陷入绝望。 当我什么都没做的时候&#xff0c;这个主意就出…

1 + 11 + 1111+ 11111+ ..... + 11111(2016个) 结果是几位数

# -*- coding: utf-8 -*- """ Created on Mon Mar 21 20:38:06 2016author: yanjie """1 11 1111 11111 ..... 11111(2016个) 结果是几位数 用什么数据结构 有几个6 写算法a []; m 0; six 0; for i in range(2016,0,-1):b (im) % 10;m (…

[回归分析][10]--相关误差的问题

[回归分析][10]--相关误差的问题这一篇文章还是来分析相关误差的问题。 1.游程数 定义&#xff1a;游程数--残差穿过x-轴的次数 用这个可以检查如残差有一块在x轴上面&#xff0c;一块在x轴下面的情形。 如上面这样的残差 下面构造两个统计量&#xff1a; 其中 n…

Spring 3 MVC异常处理程序

我遇到的大多数Spring 3错误处理示例代码似乎都提供了其用法的最简单概述&#xff0c;但是&#xff0c;有人说&#xff0c;如何处理错误比正常代码的工作方式更为重要。 前一天&#xff0c;当我在Spring&#xff08;2&#xff09;错误处理程序中遇到一个简单的GOTCHA时&#xf…

java编译找不到符号_javac编译时找不到符号?

我是个新手&#xff0c;在linux使用java编程时&#xff0c;出现这个情况。我把要引的包放在classpath中&#xff0c;红色部分&#xff1a;export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/hadoop-1.0.4.core.jar:${CLASSPATH}通过echo $CLASSP…

全备份、差异备份和增量备份概念详述

全备份、差异备份和增量备份概念详述 1、完全备份&#xff08;Full Backup&#xff09; 备份全部选中的文件夹&#xff0c;并不依赖文件的存档属性来确定备份那些文件。在备份过程中&#xff0c;任何现有的标记都被清除&#xff0c;每个文件都被标记为已备份。换言之&#xff0…

微信接入登录功能access_token流程记录

提示&#xff1a;只有认证过的订阅号或者服务号才能获取access_token。 1.app微信登录第一步是&#xff0c;app调起来微信客户端&#xff0c;通过app端的配置&#xff0c;引入一个微信类库&#xff0c; 2.授权成功后&#xff0c;微信会返回你一个code。 将APP_ID替换成你在微信…

使用MVC模式制作游戏-教程和简介

游戏开发中一种有用的体系结构模式是MVC&#xff08;模型视图控制器&#xff09;模式。 它有助于分离输入逻辑&#xff0c;游戏逻辑和UI&#xff08;渲染&#xff09;。 在任何游戏开发项目的早期阶段&#xff0c;其实用性很快就会被注意到&#xff0c;因为它允许快速更改内容&…

boost

参考博客 http://www.cnblogs.com/lidabo/p/3805487.html http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html http://www.cnblogs.com/finallyliuyu/archive/2013/05/23/3094246.html http://www.cnblogs.com/lidabo/p/3782193.html http://www.cnblogs.com/z…

moment格式换时间_不一样的日期、时间转换(moment.js)

无意中遇到了一种很奇怪的日期格式&#xff0c;从接口中返回的日期是这样的&#xff0c;如 2018-02-06T11:59:2208:00 。然而这却不是我们想要的&#xff0c;我们要的是这种&#xff0c;YYYY-MM-DD HH:mm:ss。那么这种是怎么转换的呢&#xff1f;这时候就可以使用一款很好用的日…

并发模式:生产者和消费者

在我15年的职业生涯中&#xff0c;生产者和消费者的问题是我仅遇到过几次。 在大多数编程情况下&#xff0c;我们正在做的事情是以同步方式执行功能&#xff0c;其中JVM或Web容器自行处理多线程的复杂性。 但是&#xff0c;在编写某些需要的用例时。 上周&#xff0c;我遇到了一…

POJ 1006 - Biorhythms (中国剩余定理)

B - BiorhythmsTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1006Description 人生来就有三个生理周期&#xff0c;分别为体力、感情和智力周期&#xff0c;它们的周期长度为23天、28天和33天。每一个周期中…

子线程中更新UI线程的三个方法

1、通过handler方式&#xff0c;sendmessage。 多个类间传递比较麻烦&#xff0c;也懒的写... 2、线程中通过runOnUiThread&#xff08;&#xff09; new Thread() { public void run() { //这儿是耗时操作&#xff0c;完成之后更新UI&#xff1b; runOnUiThread(new Runnab…

mysql limit acs_mysql查询操作

简单查询&#xff1a;select * from 表名;避免重复&#xff1a;select distinct 字段 from 表名;条件查询&#xff1a;select 字段,字段 from 表名 where id<5(条件);四则运算查询&#xff1a;select id,dep_id,id*dep_id from company.employee5 where id<5;定义显示格式…

作业管理系统数据字典

转载于:https://www.cnblogs.com/heyangcan/p/5312394.html

使用Hive和iReport进行大数据分析

每个JJ Abrams的电视连续剧疑犯追踪从主要人物芬奇先生一个下列叙述情节开始&#xff1a;“ 你是被监视。 政府拥有一个秘密系统-每天每天每小时都会对您进行监视的机器。 我知道是因为...我建造了它。 “当然&#xff0c;我们的技术人员知道得更多。 庞大的电气和软件工程师团…