iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何理解Shell编程中Shell变量
  • 246
分享到

如何理解Shell编程中Shell变量

2023-06-09 19:06:54 246人浏览 八月长安
摘要

这篇文章主要介绍“如何理解shell编程中Shell变量”,在日常操作中,相信很多人在如何理解Shell编程中Shell变量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解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变量”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 如何理解Shell编程中Shell变量

本文链接: https://www.lsjlt.com/news/257558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 如何理解Shell编程中Shell变量
    这篇文章主要介绍“如何理解Shell编程中Shell变量”,在日常操作中,相信很多人在如何理解Shell编程中Shell变量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell编程中Shell变量...
    99+
    2023-06-09
  • 如何理解Shell编程中的特殊变量之位置变量
    本篇内容介绍了“如何理解Shell编程中的特殊变量之位置变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!$0 获得当前脚本的文件名,包括路...
    99+
    2023-06-09
  • 如何理解Shell编程中的特殊变量之进程状态变量
    本篇内容介绍了“如何理解Shell编程中的特殊变量之进程状态变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!进程状态变量$$获取当前she...
    99+
    2023-06-09
  • shell编程中如何分析bash变量
    本篇文章为大家展示了shell编程中如何分析bash变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。导读shell编程--bash变量介绍 ,变量是计算机内存的单元,其中存放的值可以改变。当&nb...
    99+
    2023-06-05
  • 如何理解shell编程中的BASH
    本篇内容介绍了“如何理解shell编程中的BASH”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!认识Bash通过Shell将输入的指令与Ke...
    99+
    2023-06-09
  • Linux中如何使用Shell变量
    Linux中如何使用Shell变量,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、本地变量的使用       ...
    99+
    2023-06-17
  • 如何理解Linux Shell脚本编程
    本篇内容介绍了“如何理解Linux Shell脚本编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通常,当人们提到“shell脚本语言”时...
    99+
    2023-06-09
  • 如何理解Shell脚本中的位置变量参数
    这篇文章主要介绍“如何理解Shell脚本中的位置变量参数”,在日常操作中,相信很多人在如何理解Shell脚本中的位置变量参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell脚本中的位置变量参数...
    99+
    2023-06-09
  • Shell编程中特殊变量的示例分析
    这篇文章给大家分享的是有关Shell编程中特殊变量的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。$0 $# $n-->$[1..9] $* $@在shell中存在着一些特殊而又重要的变如:$1 $...
    99+
    2023-06-09
  • 如何解析Linux Shell编程
    这期内容当中小编将会给大家带来有关如何解析Linux Shell编程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行。但是实现同样功能的脚本在...
    99+
    2023-06-28
  • 如何在Shell中计算变量数值
    如何在Shell中计算变量数值?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。算术运算符如果要执行算术运算符,就离不开各种运算符号,和其他编程语言类似,shell也有很多算术运算...
    99+
    2023-06-09
  • Shell编程中变量数值计算的示例分析
    小编给大家分享一下Shell编程中变量数值计算的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如果要执行运算,那就少不了运算符,和其他的编程语言相似,shell也有很多的运算符如下:+、-、:代表着加号 和减号 或...
    99+
    2023-06-09
  • 如何处理Shell脚本中带有空格的变量
    小编给大家分享一下如何处理Shell脚本中带有空格的变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不...
    99+
    2023-06-09
  • 如何理解SHELL
    本篇文章为大家展示了如何理解SHELL,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。阅读以下部分前,强烈建议读者打开一个shell实验,这些都不是shell教科书里的大路货哦:!$!$是一个特殊的环...
    99+
    2023-06-05
  • 如何使用Shell编程
    本篇内容介绍了“如何使用Shell编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基础知识shell执行方式   sh...
    99+
    2023-06-09
  • 如何理解Shell脚本定义变量和重新赋值
    本篇内容主要讲解“如何理解Shell脚本定义变量和重新赋值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Shell脚本定义变量和重新赋值”吧!Shell支持自定义变量。定义变量定义变量时...
    99+
    2023-06-09
  • 如何学习shell编程
    如何学习shell编程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  在充满各种互联网的数字时代,Linux的运维也越来越朝着自动化的方向发展,越来越多的运维人员正在自动...
    99+
    2023-06-05
  • shell如何给变量重新赋值
    在shell中,可以使用等号(=)来给变量重新赋值。例如,假设有一个变量a,可以使用以下命令给它重新赋值:```a=10```这将把...
    99+
    2023-08-14
    shell
  • 如何使用shell编程中空格
    这篇文章主要介绍“如何使用shell编程中空格”,在日常操作中,相信很多人在如何使用shell编程中空格问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用shell编程中空格”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-09
  • 如何实现Linux Shell脚本变量和环境变量
    这篇文章主要讲解了“如何实现Linux Shell脚本变量和环境变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux Shell脚本变量和环境变量”吧!一、玩转变量和环境变量...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作