变量在linux中的作用是什么意思,浅谈linux变量

f11d3257dcdb46a0280b699710350031.gif

1.什么是变量

一句话:变量即在程序运行过程中它的值是允许改变的量。

2.变量作用

1数据的存储格式

2参与的运算

3表示的数据范围

3.变量命名规则

1 命名要见名知意(命名的时候一定要注意,不能随便起用变量名,尽量不要出现像1,2,3,A,B等一些简单的字母或数字,一旦这个变量长时间不看,过来一段时间就不知当初为什么会定义这个变量了)

2 遵守命名规则(可以使用数字,下划线,字母作为命名,需要记住的是不能用数字作为变量名开头)

3 不能以程序中保留的字作为变量名(例如:PATH, SHELL, USRE,UID, HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1)

4 使用“驼峰命名法”(小驼峰法:变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。大驼峰法:相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。)#小驼峰命名法

[root@localhost ~]# dateUserName=liaoxz

#大驼峰命名法

[root@localhost ~]# DataUserName=liaoxz

4.变量种类

(1)本地变量本地变量定义:

变量名=变量值[root@localhost ~]# user1=liaoxz变量调用

$变量名 ${变量名}#使用echo查看变量

[root@localhost ~]# echo $user1

liaoxz取消变量#语法:

unset 变量名

[root@localhost ~]# unset user1

[root@localhost ~]# user1

bash: user1: command not found...查看变量

export

env

printenv

set[root@localhost ~]# export

[root@localhost ~]# env

[root@localhost ~]# printenv

[root@localhost ~]# set本地变量的应用范围#定义完后在本地直接查看,是可以调用的

[root@localhost ~]# user1=liaoxz

[root@localhost ~]# echo $user1

liaoxz

[root@localhost ~]#

#新打开个终端再调用,没有查看到值

[root@localhost ~]# echo $user1

#下面以数状来查看下当前的进程

#pstree 进程查看工具,使用树状查看当前进程状态

[root@localhost ~]# pstree

systemd─┬─ModemManager───2*[{ModemManager}]

├─NetworkManager─┬─dhclient

│                └─2*[{NetworkManager}]

├─2*[abrt-watch-log]

├─abrtd

├─accounts-daemon───2*[{accounts-daemon}]

├─alsactl

├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}

│                 └─3*[{at-spi-bus-laun}]

├─at-spi2-registr───{at-spi2-registr}

├─atd

├─auditd─┬─audispd─┬─sedispatch

│        │         └─{audispd}

│        └─{auditd}

├─avahi-daemon───avahi-daemon

├─caribou───2*[{caribou}]

├─colord───2*[{colord}]

├─crond

├─cupsd

├─2*[dbus-daemon───{dbus-daemon}]

├─dbus-launch

├─dconf-service───2*[{dconf-service}]

├─dnsmasq───dnsmasq

├─firewalld───{firewalld}

├─gdm─┬─Xorg

│     ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───4*[{gnome-settings-}]

│     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]

│     │                 │               │             │             ├─ibus-engine-sim───2*[{ibus-engine-si+

│     │                 │               │             │             └─2*[{ibus-daemon}]

│     │                 │               │             └─6*[{gnome-shell}]

│     │                 │               └─3*[{gnome-session}]

│     │                 └─2*[{gdm-session-wor}]

│     └─3*[{gdm}]

├─2*[gdm───2*[{gdm}]]

├─goa-daemon───3*[{goa-daemon}]

├─goa-identity-se───2*[{goa-identity-se}]

├─gssproxy───5*[{gssproxy}]

├─gvfs-afc-volume───2*[{gvfs-afc-volume}]

├─gvfs-goa-volume───{gvfs-goa-volume}

├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo}

├─gvfs-mtp-volume───{gvfs-mtp-volume}

├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]

├─gvfsd───{gvfsd}

├─ibus-x11───2*[{ibus-x11}]

├─ksmtuned───sleep

├─libvirtd───15*[{libvirtd}]

├─login───bash

├─lsmd

├─lvmetad

├─master─┬─pickup

│        └─qmgr

├─mission-control───2*[{mission-control}]

├─packagekitd───2*[{packagekitd}]

├─pulseaudio───2*[{pulseaudio}]

├─rsyslogd───2*[{rsyslogd}]

├─rtkit-daemon───2*[{rtkit-daemon}]

├─smartd

├─sshd─┬─sshd───bash───pstree#这是当前使用的bash

│      └─sshd───bash#这是我新开的一个连接终端,发现是新开启的一个bash。

├─systemd-journal

├─systemd-logind

├─systemd-udevd

├─tuned───4*[{tuned}]

├─udisksd───4*[{udisksd}]

├─upowerd───2*[{upowerd}]

├─vmtoolsd───{vmtoolsd}

└─wpa_supplicant

#切换一下当前shell再使用echo查看变量

[root@localhost ~]# csh

[root@localhost ~]# echo $user1

user1: Undefined variable.

#切换shell后不能查看变量

[root@localhost ~]# pstree

systemd─┬─ModemManager───2*[{ModemManager}]

├─NetworkManager─┬─dhclient

│                └─2*[{NetworkManager}]

├─2*[abrt-watch-log]

├─abrtd

├─accounts-daemon───2*[{accounts-daemon}]

├─alsactl

├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}

│                 └─3*[{at-spi-bus-laun}]

├─at-spi2-registr───{at-spi2-registr}

├─atd

├─auditd─┬─audispd─┬─sedispatch

│        │         └─{audispd}

│        └─{auditd}

├─avahi-daemon───avahi-daemon

├─caribou───2*[{caribou}]

├─colord───2*[{colord}]

├─crond

├─cupsd

├─2*[dbus-daemon───{dbus-daemon}]

├─dbus-launch

├─dconf-service───2*[{dconf-service}]

├─dnsmasq───dnsmasq

├─firewalld───{firewalld}

├─gdm─┬─Xorg

│     ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───4*[{gnome-settings-}]

│     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]

│     │                 │               │             │             ├─ibus-engine-sim───2*[{ibus-engine-si+

│     │                 │               │             │             └─2*[{ibus-daemon}]

│     │                 │               │             └─6*[{gnome-shell}]

│     │                 │               └─3*[{gnome-session}]

│     │                 └─2*[{gdm-session-wor}]

│     └─3*[{gdm}]

├─2*[gdm───2*[{gdm}]]

├─goa-daemon───3*[{goa-daemon}]

├─goa-identity-se───2*[{goa-identity-se}]

├─gssproxy───5*[{gssproxy}]

├─gvfs-afc-volume───2*[{gvfs-afc-volume}]

├─gvfs-goa-volume───{gvfs-goa-volume}

├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo}

├─gvfs-mtp-volume───{gvfs-mtp-volume}

├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]

├─gvfsd───{gvfsd}

├─ibus-x11───2*[{ibus-x11}]

├─ksmtuned───sleep

├─libvirtd───15*[{libvirtd}]

├─login───bash

├─lsmd

├─lvmetad

├─master─┬─pickup

│        └─qmgr

├─mission-control───2*[{mission-control}]

├─packagekitd───2*[{packagekitd}]

├─pulseaudio───2*[{pulseaudio}]

├─rsyslogd───2*[{rsyslogd}]

├─rtkit-daemon───2*[{rtkit-daemon}]

├─smartd

├─sshd─┬─sshd───bash───csh───pstree#新开的csh是属于bash子shell

│      └─sshd───bash

├─systemd-journal

├─systemd-logind

├─systemd-udevd

├─tuned───4*[{tuned}]

├─udisksd───4*[{udisksd}]

├─upowerd───2*[{upowerd}]

├─vmtoolsd───{vmtoolsd}

└─wpa_supplicant

总结:本地变量只作用于当前的shell,在子shell进程和其他shell进程不生效,在当前shell终止的时候这个变量也就结束了他的使命。

(2)环境变量环境变量赋值

export 变量名=值

declare -x 变量名=值[root@localhost ~]# declare user2=lxz

[root@localhost ~]# export user1=liaoxz变量调用

$变量名 ${变量名}[root@localhost ~]# echo $user1

liaoxz

[root@localhost ~]# echo $user2

lxz

[root@localhost ~]#

取消变量

unset 变量名[root@localhost ~]# unset user1

[root@localhost ~]# user1

b查看变量

export

env

printenv

set[root@localhost ~]# export |grep user1

declare -x user1="liaoxz"

[root@localhost ~]# env

[root@localhost ~]# printenv

[root@localhost ~]# set环境变量的应用范围#在当前shell为bash定义一个环境变量

[root@localhost ~]#pstree

├─sshd─┬─sshd───bash───pstree

│      └─sshd───bash

[root@localhost ~]# export user1=liaoxz

[root@localhost ~]# echo $user1

liaoxz

#在当前shell能查看,我再在此shell下新开一个子bash shell

[root@localhost ~]#bash

[root@localhost ~]#pstree

├─sshd─┬─sshd───bash───bash───pstree#在当前shell下新开了一个bash新进程

│      └─sshd───bash

[root@localhost ~]# echo $user1

liaoxz

#使用echo可查看

[root@localhost ~]# echo $user1

#在新开的终端中用echo查看不了

总结:环境变量应用于当前shell和其所有子shell,因为新开的终端是属于新的shell,所以,不是同一个父shell是不能作用的。

(3)只读变量-常量只读变量赋值

declare -r 变量名=值

readonly 变量名=值变量调用

$变量名 ${变量名}

查看变量

export

env

printenv

set只读变量的应用范围#只读不能删不能改程序退出不在生效

[root@localhost ~]# readonly user4=ll

[root@localhost ~]# echo $user4

ll

[root@localhost ~]# unset user4

bash: unset: user4: cannot unset: readonly variable

#默认作用于当前shell,可以使用和环境比那里一起使用,作用与当前shell及其子shell

(4)位置变量位置变量定义#位置变量:在脚本代码中调用通过命令行传递给脚本的参数

$1:对应第1参数,数字自定义,数字几就是第几参数

$0: 命令本身

$*: 传递给脚本的所有参数,全部参数合为一个字符串

$@: 传递给脚本的所有参数,每个参数为独立字符串

$#: 传递给脚本的参数的个数

$@ $* 只在被双引号包起来的时候才会有差异

#实例证明在后续【bash脚本用法】上传博客后指定链接

c80a04d150dcd0412938dec3ffbafe86.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值