首页 > 系统相关 >Shell编程 - 变量篇

Shell编程 - 变量篇

时间:2024-11-14 23:10:37浏览次数:1  
标签:Shell 变量 编程 PID 进程 pts bash

变量

1. 系统变量

在命令行提示符直接执行env、set查看系统或环境变量。env显示用户环境变量,set显示Shell预先定义好的变量以及用户变量。可以通过export导出成用户变量。
一些写Shell脚本时常用的系统变量:

$SHELL 默认Shell
$HOME 当前用户家目录
$IFS 内部字段分隔符
$LANG 默认语言
$PATH 默认可执行程序路径
$PWD 当前目录
$UID 当前用户ID
$USER 当前用户
$HISTSIZE 历史命令大小,可通过HISTTIMEFORMAT变量设置命令执行时间
$RANDOM 随机生成一个0至32767的整数
$HOSTNAME 主机名
$$ $$一个特殊的变量,它代表当前shell进程的PID

2. 普通变量与临时环境变量

普通变量定义:VAR=value
临时环境变量定义:export VAR=value
变量引用:$VAR
Shell进程的环境变量作用域是Shell进程,当export导入到系统变量时,则作用域是Shell进程及其Shell子进程。

ps -axjf | grep pts命令的含义是:列出所有进程(包括没有控制终端的进程),
并以作业格式显示详细信息,然后通过grep过滤出包含“pts”的行。
这里的“pts”可能是指“pseudo-terminal slave”,即伪终端从设备,这通常与远程连接(如SSH)相关联。
ps:进程状态命令。
-a:显示所有终端的进程。
x:显示没有控制终端的进程。
-j:使用作业格式显示进程列表。
-f:全格式显示,包括更多详细信息。
|:管道符号,将前一个命令的输出作为后一个命令的输入。
grep:一个文本搜索工具,用于搜索包含特定模式的行。
pts:grep搜索的模式,用于匹配包含“pts”的行。

ps axjf输出的第一列是PPID(父进程ID),第二列是PID(子进程ID)
当SSH连接Shell时,当前终端PPID(-bash)是sshd守护程序的PID(root@pts/0),
因此在当前终端下的所有进程的PPID都是-bash的PID,比如执行命令、运行脚本。
所以当在-bash下设置的变量,只在-bash进程下有效,而-bash下的子进程bash是无效的,
当export后才有效。
所以在当前shell定义的变量一定要export,否则在写脚本时,会引用不到。
还需要注意的是退出终端后,所有用户定义的变量都会清除。

3. 位置变量

  • 位置变量指的是函数或脚本后跟的第n个参数。
  • $1-$n,需要注意的是从第10个开始要用花括号调用,例如$
  • shift可对位置变量控制,
#!/bin/bash
echo "1: $1"
shift
echo "2: $2"
shift
echo "3: $3"
# bash test.sh a b c
1: a
2: c
3:

每执行一次shift命令,位置变量个数就会减一,而变量值则提前一位。shift n,可设置向前移动n位。

4. 特殊变量

$0 脚本自身名字
$? 返回上一条命令是否执行成功,0为执行成功,非0则为执行失败
$# 位置参数总数
$* 所有的位置参数被看做一个字符串
$@ 每个位置参数被看做独立的字符串
$$ 当前进程PID
$! 上一条运行后台进程的PID

5. 变量引用

赋值运算符 示例
= 变量赋值
+= 两个变量相加

标签:Shell,变量,编程,PID,进程,pts,bash
From: https://www.cnblogs.com/kyle-7Qc/p/18547069

相关文章

  • shell编程 - 基础篇
    1.Shell简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。2.Shell编程语言必知必会shell命令解释器:bash编程常用命令解释器.命令解释器bash目前应用最广......
  • 深入浅出C#编程语言
    引言随着.NET框架的发展,C#(发音为“CSharp”)已经成为一种非常流行且功能强大的面向对象和类型安全的编程语言。自2002年由微软首次发布以来,C#已经经历了多个版本的迭代,每个新版本都带来了更多的特性和改进。本文旨在为初学者提供一个C#编程语言的基础概述,并探讨其一些核心......
  • C++基础编程(一)
    If语句,条件运算符&&||,运算符优先级,for循环语句,switch语句,continue,break,do,while打印一个锥形1~9矩阵,打印9*9乘法表,For(初始化;条件;每次循环必执行语句)输出abcd....ABCD....0123....输出从1~1000,能被7整除的数While输入一组数,0为结束,计算他们的和......
  • Python并行编程1并行编程简介(上)高频面试题:GIL进程线程协程
    1并行编程简介首先,我们将讨论允许在新计算机上并行执行的硬件组件,如CPU和内核,然后讨论操作系统中真正推动并行的实体:进程和线程。随后,将详细说明并行编程模型,介绍并发性、同步性和异步性等基本概念。介绍完这些一般概念后,我们将讨论全局解释器锁(GIL)及其带来的问题,从而了解Py......
  • shell 命令
      read:https://www.cnblogs.com/f-ck-need-u/p/7402149.html如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。选项说明:-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。-d:指定读取行的结束符号。默认结束符号为换行符......
  • 哋它亢 编程语言
    哋它亢是一门易于学习、功能强大的编程语言[1]。它提供了高效的高级数据结构,还能简单有效地面向对象编程。哋它亢优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。哋它亢官网(https://www.datacon-14302.xyz/[2])上免费提供了......
  • Spring Boot编程训练系统:核心特性与实现策略
    3系统分析3.1可行性分析通过对本编程训练系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本编程训练系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构系统......
  • Spring Boot编程训练系统:从概念到实现
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 关于变量的声明和定义、内部函数和外部函数
    关于变量的声明和定义一个函数一般由两部分组成:声明部分和执行语句。声明部分的作用:是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行声明。对于函数而言,声明和定义的区别是明显的,函数的声明是函数的原型,而函数的定义是对函数功能的定义。对被调用函数的声明是放在主调......
  • Spring Boot编程训练系统:设计与实现要点
    5系统详细实现5.1管理员模块的实现5.1.1用户信息管理管理员对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。图5.1用户信息管理界面5.1.2题库资源管理系统管理员可以对题库资源信息进行添加,修改,删除以及查询操作。具体界面如图5.2所示。图5.2题......