SHELL下的变量了解

一、简述

变量的定义

变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来标示不固定的值的一种方法
变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息
在 shell 中变量是不能永久保存在系统中的,必须在文件中声明在 shell 脚本中变量的种类

变量的分类

在 shell 中变量分为环境级变量,用户级变量,系统级变量
环境级变量只在当前shell中生效,shell关闭变量丢失
用户级变量写在用户的骨文件中(~/bash_profile),只针对当前用户生效
系统级变量被写在系统的配置文件/etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效

二,shell 脚本中变量的定义方法

1,环境级
export A=1

在系统的用户在终端自定义的变量是不能直接拿到脚本里面使用的,因为运行脚本时相当于在终端里面又打开了一个shell,这俩环境不一样,需要把原来的变量提升到环境变量级别,才可以使用。


[root@desktop mnt]# vim file.sh
[root@desktop mnt]# a=1
[root@desktop mnt]# echo $a
1
[root@desktop mnt]# sh file.sh 

[root@desktop mnt]# export a=1   ##提升环境变量
[root@desktop mnt]# sh file.sh 
1
[root@desktop mnt]# cat file.sh 
#!/bin/bash
echo $a

用户级

vim ~/bash_profile
export a=1

[root@desktop mnt]# cd 
[root@desktop ~]# ls -a
.                .bashrc    Downloads        .mozilla  .targetcli
..               .cache     .esd_auth        Music     .tcshrc
anaconda-ks.cfg  .config    .gnome2          Pictures  Templates
.bash_history    .cshrc     .gnome2_private  Public    Videos
.bash_logout     Desktop    .ICEauthority    smbpass   .viminfo
.bash_profile    Documents  .local           .ssh
[root@desktop ~]# vim .bash_profile 
[root@desktop ~]# source .bash_profile   ##source重新加载
[root@desktop ~]# echo $a
1
[root@desktop ~]# 
系统级别
vim /etc/profile

export A=1

[root@desktop ~]# vim /etc/profile
[root@desktop ~]# source /etc/profile
[root@desktop ~]# echo $b
1

env可以查看系统的全部变量

[root@desktop ~]# env
XDG_SESSION_ID=1
HOSTNAME=desktop
SELINUX_ROLE_REQUESTED=
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=172.25.254.66 56730 22
SELINUX_USE_CURRENT_RANGE=
OLDPWD=/mnt
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
a=1
PWD=/root
XMODIFIERS=@im=ibus
LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=172.25.254.66 56730 172.25.254.166 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

修改命令提示符

[root@desktop ~]# echo $PS1
[\u@\h \W]\$
[root@desktop ~]# vim /etc/profile
[root@desktop ~]# PS1='linux>'
linux>date
Fri Jun 29 13:34:34 EDT 2018
linux>ls
anaconda-ks.cfg  Documents  Music     Public   Templates
Desktop          Downloads  Pictures  smbpass  Videos
linux>PS1='westos \u>'
westos root>PS1='westos \W'
变量名称的规范变量名称中通常包含大小写字字母,数字,下划线(不是必须)
变量名称格式
WESTOS_LINUX
Westos_Linux

westoS_Linux

[root@desktop ~]# a1=2 
[root@desktop ~]# a=hello\ world
[root@desktop ~]# echo $a
hello world

单引号就是\的批量,\是单个转义,''是批量转义

双引号不可以引号! $ \ ``!

单引号可以随便引,所见即所得,动词变名词



数组\

[root@desktop ~]# ls
anaconda-ks.cfg  Documents  Music     Public   Templates
Desktop          Downloads  Pictures  smbpass  Videos
[root@desktop ~]# westos(`ls`)
-bash: syntax error near unexpected token ``ls`'
[root@desktop ~]# westos=(`ls`)
[root@desktop ~]# echo $westos
anaconda-ks.cfg
[root@desktop ~]# echo ${westos[1]}
Desktop
[root@desktop ~]# echo ${westos[1]}

目前的版本中$()完全等于``,都是先执行里面的然后赋值给变量
这里将ls的执行结果赋给westos,echo $westos其实就是打印数组的第0个值

变量值的传递

$0 是脚本本身的名字

$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@ 脚本后跟的所有字符串,模式为“ 1”“2”“3

$$ 是当前终端的PID




linux 系统中命令别名的设定

alias可以查看系统存在的别名

alias write='vim' 设定系统别名,输入write时就会打开vim编辑器

[root@desktop ~]# alias write='vim'
[root@desktop ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
alias write='vim'



[root@desktop ~]# unalias write
[root@desktop ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@desktop ~]#



八,利用命令执行结果设定变量

Hostname=$(hostname)
Hostname=`hostname`
$?
$? 是命令在执行完成之后产生的退出值
范围是 [0-255]
当 $?=0 时标示命令执行没有错误输出

这个值可以用 exit 命令执行 .

0表示成功(Zero - Success)

非0表示失败(Non-Zero  - Failure)

2表示用法不当(Incorrect Usage)

127表示命令没有找到(Command Not Found)

126表示不是可执行的(Not an executable)

>=128 信号产生










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值