shell编程之变量
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,shell编程之变量前言什么是shell变量?为什么需要shell变量?如何定义shell变量?本文主要带你了解shell变量的相关概念、shell变量的使用与作用等基础知识,适合初学者学习,了解。一
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
上海先进网络技术价格查询
服务器管理计算机名称
服务器显卡切换
最新的服务器是什么
灵川县软件开发
账户网络安全管理办法
昆山模具erp软件开发
网络安全考研要考什么
吉林友软件开发
极品飞车服务器维护
老帕萨特氧传感器数据库
重庆vivo软件开发薪资
加强网络安全 推教育信息
宝德服务器怎么设置管理口ip
数据库数据类型哪些不需要引号
流浪者柯南游戏服务器
overlay网络技术
我的世界服务器玩家用的指令
润和软件开发过的软件
中国移动网络技术类岗位职责
北京慕安网络安全公司
普法课堂网络安全法
web界面无法定位服务器
数据库视图设置
互联网 农业科技项目优势
软件开发前要做什么
maybe数据库
x86服务器用的什么处理器
报价单数据库
义乌电商软件开发