我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解Shell编程中Shell变量

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解Shell编程中Shell变量

这篇文章主要介绍“如何理解Shell编程中Shell变量”,在日常操作中,相信很多人在如何理解Shell编程中Shell变量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell编程中Shell变量”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、变量操作

A.变量显示、打印
语法:echo $var
B.变量设置
语法:var=value

变量的设置规则:
1.变量两端不能直接接空格符
2.变量名称只能是因为字母与数字,但开头不能使数字
3.双引号内的特殊字符如$等,保持原本特性

代码如下:

[root@bogon ~]# var="lang is $LANG"
[root@bogon ~]# echo %var
root@bogon ~]# echo $var
lang is zh_CN.UTF-8


1. 单引号内的特殊字符则仅为一般字符

代码如下:

[root@bogon ~]#
[root@bogon ~]# var='lang is $LANG';echo $var
lang is $LANG


2. 在一串命令中,还需要通过其他命令提供的信息,可用单引号‘命令'或&(命令),举例:指令1在执行的过程中需要先知道指令2的的值,但是指令1,2在一串指令中

代码如下:

[root@bogon ~]# uname -r
2.6.18-371.el5
[root@bogon ~]# cd /lib/modules/$(uname -r)/kernel
[root@bogon kernel]#


3. 变量的累加

代码如下:

[root@bogon kernel]# var=${var}yes
[root@bogon kernel]# echo $var
lang is $LANGyes


4. 数组变量设置与读取

代码如下:

[root@bogon ~]# array[1]=a
[root@bogon ~]# array[2]=b
[root@bogon ~]# array[3]=c
[root@bogon ~]# echo ${array[1]}
a
[root@bogon ~]# echo ${array[2]}

[root@bogon ~]# echo ${array[3]}
c

C.取消变量(unset)
语法: unset var

D.变量查看(set)
语法:set

比较重要的几个自定义变量
HISTFILE:历史记录存储位置
MAILCHECK:多少秒扫描次邮箱,查看是否有新邮件
PS1:提示符设置
$:目前这个shell的PID
?:刚才执行完命令的回传码。0为正确,非0为错误

举例:

代码如下:


比较重要的几个自定义变量
HISTFILE:历史记录存储位置
MAILCHECK:多少秒扫描次邮箱,查看是否有新邮件
PS1:提示符设置
$:目前这个shell的PID
?:刚才执行完命令的回传码。0为正确,非0为错误

E.变量键盘读取(read)
语法:read [-pt] var
选项与参数:
-p:后可跟提示信息
-t:后跟等待输入的描述

举例:

代码如下:


[plain] view plaincopyprint?
[root@bogon ~]# read atest 
this is a test 
[root@bogon ~]# echo $atest 
this is a test 
[root@bogon ~]# read -p "please input.. " attest   
please input.. hello world      =>提示信息 
[root@bogon ~]# echo $atest 
hello world 
[root@bogon ~]# read -p "please input.. " -t 5  atest 
please input..  =>5秒未输入回到命令行模式 
[root@bogon ~]#  
[root@bogon ~]# echo $atest 
hello world

F.变量声明(declare)
语法:declare [-aixr] var
选项与参数
declare后不接任何内容,代表查询所有变量,作用和set一致
-a  :将后面名为 variable的变量定义成为数组 (array)类型
-i  :将后面名为 variable的变量定义成为整数数字 (integer)类型
-x  :用法与 export一样,就是将后面的 variable变成环境变量;
+x :将环境变量变为自定义变量
-r  :将变量配置成为 readonly类型,该变量不可被更改内容,也不能 unset(需要注销后再登陆才能变回)

举例:

代码如下:

[plain] view plaincopyprint?
[root@bogon ~]# echo $sum 
100+50+10 =>默认当做字符串处理 
[root@bogon ~]# declare -i sum=100+50+10  
[root@bogon ~]# echo $sum 
160 =>声明为int 因此可以做加法 
[root@bogon ~]# declare -x sum 
[root@bogon ~]# export | grep sum 
declare -ix sum="160" =>查询到是环境变量 
[root@bogon ~]# declare +x sum 
[root@bogon ~]# export | grep sum= >查询不到是环境变量 
[root@bogon ~]# declare -r sum;sum=test 
bash: sum: readonly variable =>只读允许修改 

G.变量内容删除
语法
${var#/key}:从前往后删除符合key最短的那一个
${var##/key}:从前往后删除符合key最长的那一个
${var%/key}:从后往前删除符合key最短的那一个
${var%%/key}:从后往前删除符合key最短的那一个

举例:${var#/key}

代码如下:

[plain] view plaincopyprint?
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path#/*:}        =>key为*.(*为通配符) 
/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 



举例:${var##/key}

代码如下:

[plain] view plaincopyprint?
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path##/*:} 
/root/bin 

H.变量内容替换
语法:
${var/旧字符串/新字符串}:替换第一个满足条件的字符串
${var//旧字符串/新字符串}:替换所有满足条件的字符串
举例:${var/旧字符串/新字符串}

代码如下:

[plain] view plaincopyprint?
root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path/sbin/SBIN} 
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 



举例:${var//旧字符串/新字符串}

代码如下:

[plain] view plaincopyprint?
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path//sbin/SBIN} 
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/usr/X11R6/bin:/root/bin 

二、环境变量
普通变量可以理解为局部变量,环境变量可以理解为全局变量,登陆成功获得的bash shell就是一个进程,在此情况下再去打开一个新SHELL就是他的子进程,子进程是无法获取父进程的自定义变量,但是可以获取父进程的环境变量

A.环境变量导出(export )
语法:export  var

B.环境变量查看(env )

语法:env

比较重要的几个环境变量
HOME:代表用户的主文件夹
SHELL:代表目前使用的shell是哪个程序,我现在使用的是/bin/bash
HISTSIZE:历史记录最大存储条数
MAIL:mail命令系统收信时,系统会读取的信箱文件
PATH:执行文件查找路径
LANG:语系信息
RANDOM:随机数变量(0~32767)

三、提示符的设置(PS1)
变量PS1='[\u@\h \W]\$ '记录了命令提示符的显示格式 [root@bogon ~]#

符号意义
\d :可显示出[星期月日]的日期格式,如:"Mon Feb 2"
\H :完整的主机名。
\h :仅取主机名在第一个小数点之前的名字
\t :显示时间,为 24小时格式的[HH:MM:SS]
\T :显示时间,为 12小时格式的[HH:MM:SS]
\A :显示时间,为 24小时格式的[HH:MM]
\@ :显示时间,为 12小时格式的[am/pm]样式
\u :目前使用者的账号名称,如[root];
\v :BASH的版本信息,如鸟哥的测试主板本为 3.2.25(1),仅取[3.2]显示
\w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以 ~取代;
\W :利用 basename函数取得工作目录名称,所以仅会列出最后一个目录名。
\# :下达的第几个命令。
\$ :提示字符,如果是 root时,提示字符为 #,否则就是 $

举例:

代码如下:

[root@bogon ~]# PS1='[\u@\h\A \W \#]\$ '
[root@bogon23:45 ~ 82]#

到此,关于“如何理解Shell编程中Shell变量”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解Shell编程中Shell变量

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何理解Shell编程中Shell变量

这篇文章主要介绍“如何理解Shell编程中Shell变量”,在日常操作中,相信很多人在如何理解Shell编程中Shell变量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell编程中Shell变量
2023-06-09

如何理解Shell编程中的特殊变量之位置变量

本篇内容介绍了“如何理解Shell编程中的特殊变量之位置变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、$0 获得当前脚本的文件名,包
2023-06-09

如何理解Shell编程中的特殊变量之进程状态变量

本篇内容介绍了“如何理解Shell编程中的特殊变量之进程状态变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!进程状态变量1、$$获取当前s
2023-06-09

shell编程中如何分析bash变量

本篇文章为大家展示了shell编程中如何分析bash变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。导读shell编程--bash变量介绍 ,变量是计算机内存的单元,其中存放的值可以改变。当 Sh
2023-06-05

Shell编程之Shell变量学习总结

一、变量操作 A.变量显示、打印语法:echo $varB.变量设置语法:var=value 变量的设置规则:1.变量两端不能直接接空格符2.变量名称只能是因为字母与数字,但开头不能使数字3.双引号内的特殊字符如$等,保持原本特性 [roo
2022-06-04

如何理解shell编程中的BASH

本篇内容介绍了“如何理解shell编程中的BASH”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、认识Bash通过Shell将输入的指令与
2023-06-09

深入浅出Shell编程 Shell变量介绍

深入浅出Shell编程: Shell 变量 1 系统变量 2 Shell用户变量 ■2.1 基础 ■2.2 使用技巧 ■2.3 shell 中的数组 3 shell 环境变量 先不要管Shell的版本,来看看Shell 变量,在Shell中
2022-06-04

Shell编程之特殊变量和扩展变量详解

特殊变量在Shell中的特殊变量主要分别两种位置参数变量、状态变量两种。 位置参数变量Shell中的位置参数变量主要是指0、0、1、$#等,主要用于从命令行、函数或脚本执行等地方传递参数。详细说明如下所示:$0:获取当前执行的Shell脚本
2022-06-04

Linux中如何使用Shell变量

Linux中如何使用Shell变量,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、本地变量的使用 本地变量就如同局部变量一样,只在本SHELL中起作用。它不会
2023-06-17

如何理解Linux Shell脚本编程

本篇内容介绍了“如何理解Linux Shell脚本编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通常,当人们提到“shell脚本语言”时
2023-06-09

Shell编程中的特殊变量之位置变量介绍

1、$0 获得当前脚本的文件名,包括路径。#写一个测试脚本vim test.sh#内容如下dirname$0basename$0#执行一下bash$(pwd)/test.sh#输出如下/home/janetest.sh2、$n 获取当前执行
2022-06-04

如何理解Shell脚本中的位置变量参数

这篇文章主要介绍“如何理解Shell脚本中的位置变量参数”,在日常操作中,相信很多人在如何理解Shell脚本中的位置变量参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell脚本中的位置变量参数
2023-06-09

Shell编程之变量的高级用法详解

变量替换语法说明${变量名#匹配规则}从变量开头进行规则匹配,将符合最短的数据删除${变量名##匹配规则}从变量开头进行规则匹配,将符合最长的数据删除${变量名%匹配规则}从变量尾部进行规则匹配,将符合最短的数据删除${变量名%%匹配规则}
2022-06-04

Shell编程中的特殊变量之进程状态变量介绍

进程状态变量 1、$$获取当前shell的进程号(PID) 2、$!执行上一个指令的PID 3、$获取执行上一个命令的返回值(0为成功,非零为失败,这个很常用) 4、$_在此之前执行的命令或脚本的最后一个参数cat> test$.shech
2022-06-04

Shell编程中特殊变量的示例分析

这篇文章给大家分享的是有关Shell编程中特殊变量的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。$0 $# $n-->$[1..9] $* $@1、在shell中存在着一些特殊而又重要的变如:$1 $0
2023-06-09

如何解析Linux Shell编程

这期内容当中小编将会给大家带来有关如何解析Linux Shell编程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行。但是实现同样功能的脚本在
2023-06-28

如何在 shell 中设置 java 环境变量?(shell怎么设置java环境变量)

在shell中设置Java环境变量是开发Java应用程序的重要步骤之一。以下是详细的步骤:一、了解环境变量的概念环境变量是操作系统中的一个重要概念,它是一个或一组命名的值,这些值可以被系统中的其他程序访问和使用。在
如何在 shell 中设置 java 环境变量?(shell怎么设置java环境变量)
Javashell2024-12-15

如何在Shell中计算变量数值

如何在Shell中计算变量数值?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。算术运算符如果要执行算术运算符,就离不开各种运算符号,和其他编程语言类似,shell也有很多算术运算
2023-06-09

Shell编程中变量数值计算的示例分析

小编给大家分享一下Shell编程中变量数值计算的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如果要执行运算,那就少不了运算符,和其他的编程语言相似,shell也有很多的运算符如下:+、-、:代表着加号 和减号 或
2023-06-09

如何处理Shell脚本中带有空格的变量

小编给大家分享一下如何处理Shell脚本中带有空格的变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录