一、shell变量

it2022-05-06  14

shell变量

一、 变量定义

变量名通常由大小写字母、数字和下划线(_)组成,但不能以数字开头通过等号(=)为变量分配值,等号两边不能有空格变量存储的数据类型是整数值和字符串值在对变量赋于字符串值时,建议使用引号将其包裹。如果字符串中存在空格,请一定要使用单引号或双引号将整个内容包裹。注意:单引号里的内容原封不动的输出,双引号里有变量的调用则会调用变量 [xf@xuexi ~]$ Var=1 [xf@xuexi ~]$ Var1="$Var" [xf@xuexi ~]$ Var2='$Var' [xf@xuexi ~]$ echo $Var1 1 [xf@xuexi ~]$ echo $Var2 $Var 要对变量进行调用时,在变量名前加美元符号$如果需要增加变量的值,那么可以进行变量值的叠加。不够变量需要用双引号包含" 变 量 名 " 或 变量名"或 "{变量名} [xf@xuexi ~]$ VAR1=mysql [xf@xuexi ~]$ echo $VAR1 mysql [xf@xuexi ~]$ echo ${VAR1}db.log mysqldb.log [xf@xuexi ~]$ echo "$VAR1"db.log mysqldb.log [xf@xuexi ~]$ echo $VAR1db.log //如果直接写有可能会输出错误内容 .log 设置只读变量 在变量的前面 添加readonly把变量定义为一个只能读取的变量,无法进行修改。 name='leeguo' readonly name name='idealcitier' echo ${name} #output test.sh: 15: test.sh: name: is read only 删除变量unset 使用unset定义一个变量,变量的内容就被删除了。 name='idealcitier' unset name echo ${name}

二、 分类

分别为环境变量,用户自定义变量,.位置参数变量, .预定义变量;

环境变量:这种变量中主要保存的是与系统操作环境相关的数据,通常都是大写字母 [xf@xuexi ~]$ env //当前用户的环境变量,系统设置好的,不需要手动设置,可以拿来直接用 XDG_VTNR=1 SSH_AGENT_PID=8320 XDG_SESSION_ID=1 HOSTNAME=xuexi IMSETTINGS_INTEGRATE_DESKTOP=yes VTE_VERSION=5202 TERM=xterm-256color SHELL=/bin/bash XDG_MENU_PREFIX=gnome- HISTSIZE=1000 用户自定义变量 [xf@xuexi ~]$ VAR2=123 [xf@xuexi ~]$ echo $VAR2 123 位置参数变量:这种变量主要用来向脚本当中传递参数或数据,变量名不能自定义,作用是固定的。 0 获 取 当 前 s h e l l 脚 本 文 件 的 文 件 名 , 0获取当前shell脚本文件的文件名, 0shelln($1,$2, 3.... ) 获 取 第 n 个 参 数 , n 大 于 9 时 使 用 3....)获取第n个参数,n大于9时使用 3....nn9使{n}(${10})。 [xf@xuexi ~]$ cat a.sh #!/bin/bash echo "$0" echo "$1" echo "$3" [xf@xuexi ~]$ sh a.sh 1 2 3 a.sh 1 3 [xf@xuexi ~]$ sh /home/xf/a.sh 1 2 3 /home/xf/a.sh 1 3 [xf@xuexi ~]$ sh a.sh 1 3 2 a.sh 1 2 预定义变量 是bash中已经定义好的变量,变量名不能自定义,作用也是固定的 $#是传递到脚本的参数的个数 $*是以一个字符串显示所有向脚本传递的参数 $@传递给脚本或函数的所有参数,每个参数是一个对象 $$是当前进程的进程号PID $?显示上一条命令的退出状态,0表示没有错误,其他都有错误 $!是后台运行的最后一个进程的进程号PID

》》》博主长期更新学习心得,推荐点赞关注!!! 》》》若有错误之处,请在评论区留言,谢谢!!!


最新回复(0)