shell编程之变量
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,shell编程之变量前言什么是shell变量?为什么需要shell变量?如何定义shell变量?本文主要带你了解shell变量的相关概念、shell变量的使用与作用等基础知识,适合初学者学习,了解。一
千家信息网最后更新 2026年11月02日shell编程之变量
shell编程之变量
前言
- 什么是shell变量?
- 为什么需要shell变量?
- 如何定义shell变量?
本文主要带你了解shell变量的相关概念、shell变量的使用与作用等基础知识,适合初学者学习,了解。
一、shell变量的概念
各种shell环境中都属于到了"变量"的概念。shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而变化。通过使用变量,shell程序可以提供更加灵活的功能,适应性更强。
常见的shell变量的类型包括自定义变量、环境变量、位置变量、预定义变量。
1、自定义变量
系统用户自己定义,只在自己的shell环境中有效。
下面通过实例来解释如何定义新的变量,如何查看和引用变量以及变量赋值的特殊操作。
[root@localhost shell]# Value=tome[root@localhost shell]# Version=6.0[root@localhost shell]# echo $V$Value $Version [root@localhost shell]# echo $Value tome[root@localhost shell]# echo $Version 6.0[root@localhost shell]# echo $Version4.5.5[root@localhost shell]# echo ${Version}4.56.04.5//以上是变量定义与查看操作//下面是变量赋值特殊操作[root@localhost shell]# vlan=vlan 5.0bash: 5.0: 未找到命令...[root@localhost shell]# vlan="vlan 5.0" //双引号[root@localhost shell]# echo $vlan vlan 5.0[root@localhost shell]# ss=8.8[root@localhost shell]# qq="QQ $ss"[root@localhost shell]# echo $qqQQ 8.8[root@localhost shell]# qq='QQ $ss' //单引号[root@localhost shell]# echo $qqQQ $ss[root@localhost shell]# ls -lh `which useradd` //反撇号(esc下方按键)-rwxr-x---. 1 root root 116K 11月 6 2016 /sbin/useradd[root@localhost shell]# read hehe //从键盘输入123[root@localhost shell]# echo $hehe 123设置变量的作用范围,export设置全局变量,bash可以进入子shell中。
[root@localhost shell]# echo $hehe 123[root@localhost shell]# bash //进入子shell中[root@localhost shell]# echo $hehe //无法调用父shell变量[root@localhost shell]# exit //返回父shell中exit[root@localhost shell]# echo $hehe 123[root@localhost shell]# export hehe //定义全局[root@localhost shell]# bash[root@localhost shell]# echo $hehe123下面来介绍一下数值变量的运算
shell变量的数值运算多用于脚本程序的过程控制(如循环次数、使用量比较等)。在Bash Shell环境中,只能进行简单的整数运算,不支持小数运算。
(1)加法运算:+
(2)减法运算:-
(3)乘法运算:*(需要转义)
(4)除法运算:/
(5)求模(取余)运算:%
运算实例:
[root@localhost shell]# X=36[root@localhost shell]# Y=33[root@localhost shell]# expr $X + $Y69[root@localhost shell]# expr $X - $Y3[root@localhost shell]# expr $X \* $Y1188[root@localhost shell]# expr $X / $Y1[root@localhost shell]# expr $X % $Y32.特殊变量
(1)环境变量--可以修改
[root@localhost shell]# envXDG_SESSION_ID=11HOSTNAME=localhost.localdomainTERM=xtermSHELL=/bin/bashHISTSIZE=1000USER=rootLS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binMAIL=/var/spool/mail/rootPWD=/root/shellLANG=zh_CN.UTF-8HISTCONTROL=ignoredupsHOME=/rootSHLVL=2LOGNAME=rootXDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/LESSOPEN=||/usr/bin/lesspipe.sh %shehe=123XDG_RUNTIME_DIR=/run/user/0_=/bin/env[root@localhost shell]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin(2)位置变量 --为程提供操作参数。使用$n(n范围(1~9))
[root@localhost shell]# vim add2.sh[root@localhost shell]# cat add2.sh #!/bin/bashsum=`expr $1 + $2`echo "$1 + $2 = $sum"echo $sum[root@localhost shell]# ./add2.sh 2 32 + 3 = 55(3)预定义变量--只能使用无法更改的变量
$#--命令行中位置参数的个数
$*--所有位置参数的内容
$?--前一条命令执行后的状态,返回0表示正确,反之错误。
$0--脚本名称
变量
运算
环境
参数
位置
特殊
命令
概念
用户
系统
作用
全局
实例
引号
数值
程序
脚本
范围
变化
编程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
喔噻互联网科技有限公司
新华互联网科技学校
北京互联网科技
互联网与新科技
唐信互联网科技
美国互联网前沿科技
无锡溥仪互联网科技有限公司
新华互联网科技2019
哈尔滨新华互联网科技学院
栖莱科技互联网股份有限公司
知域互联网科技有限公司大骗子
互联网科技商业
河南住房之家互联网科技
互联网第三次科技革命特征
广州千川互联网科技有限公司
互联网科技股为什么大涨
银川新华互联网科技学校原画
承德科技产业互联网平台
现代科技的标志之一的互联网
互联网是第几次科技革命的成果
互联网科技深圳
北京互联网科技
互联网 的科技创新
互联网科技上市公司
银川新华互联网科技职业技术培训学校图片
工业互联网展湾科技股份有限公司
南通创西澳互联网科技有限公司
富国互联网金融科技混合基金
安徽零酒互联网科技有限公司