shell编程之变量
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,shell编程之变量前言什么是shell变量?为什么需要shell变量?如何定义shell变量?本文主要带你了解shell变量的相关概念、shell变量的使用与作用等基础知识,适合初学者学习,了解。一
千家信息网最后更新 2025年02月19日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 % $Y3
2.特殊变量
(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安全错误
数据库的锁怎样保障安全
火山软件开发平台配置公开
软件开发拒绝加班
社区网络安全签名活动
新h3c服务器硬盘
redux前端数据库
网络安全资料a
天象网络技术有限公司是骗人的吗
南京测试软件开发平台
软件开发android技术
美剧星球的服务器是境外还是境内
mysql数据库建模方式
pg数据库如何查询用户
电网网络安全 文件
计算机网络技术要学什么数学
微视频怎么设置网络安全
企业微信扫码进群显示服务器异常
聊天软件开发要求
安徽服务器机柜一般多少钱
高中水平网络技术测试题型
聚赢互联网科技是正规平台吗
服务器报价单
陕西网络技术服务价目表
服务器hdd灯亮红灯怎么回事
世界上最大的公司公开数据库
国家医学数据库招聘
云帮手服务器管理技巧
游戏软件开发助理做什么的
数据库注释怎么打开
网络安全是哪些方面的
星旅途互联网科技