概述
文章目录
- Shell中的变量
- 1. 系统变量
- $HOME
- $PWD
- $SHELL
- $USER
- set
- env
- 2. 自定义变量
- 2.1 基本语法
- 2.2 变量定义规则
- 2.3 实例
- 3. 特殊变量
- $n
- $#
- $和$@
- $?
Shell中的变量
1. 系统变量
$HOME
获取当前用户的工作目录
[root@jiangnan ~]# echo $HOME
/root
[root@jiangnan ~]#
$PWD
获取当前所在的目录
[root@jiangnan tomcat]# echo $PWD
/root/tomcat
[root@jiangnan tomcat]#
区别:我们也可以使用pwd返回当前的目录,但是pwd是命令,而PWD是系统变量。
$SHELL
获取当前使用的shell解析器
[root@jiangnan tomcat]# echo $SHELL
/bin/bash
[root@jiangnan tomcat]#
$USER
获取当前用户
[root@jiangnan tomcat]# echo $USER
root
[root@jiangnan tomcat]#
set
获取shell中的所有变量
[root@jiangnan tomcat]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
......
_=clear
colors=/root/.dircolors
[root@jiangnan tomcat]#
env
获取所有的环境变量
[root@jiangnan ~]# env
XDG_SESSION_ID=13289
HOSTNAME=jiangnan
TERM=xterm
......
_=/usr/bin/env
OLDPWD=/root/tomcat
[root@jiangnan ~]#
2. 自定义变量
2.1 基本语法
定义变量:变量=值
撤销变量:unset变量
声明静态变量:readonly变量。
注意:静态变量不能被unset
2.2 变量定义规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格
- 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
- 变量的值如果有空格,需要使用双引号或单引号括起来。
- 使用export可将变量提升为环境变量,供全局使用
2.3 实例
# 定义变量A
[root@jiangnan ~]# A=5
[root@jiangnan ~]# echo $A
5
# 给变量A重新赋值
[root@jiangnan ~]# A=6
[root@jiangnan ~]# echo $A
6
# 撤销变量A
[root@jiangnan ~]# unset A
[root@jiangnan ~]# echo $A # 变量A被撤销了,所以不能打印任何数据
[root@jiangnan ~]#
# 定义静态变量B
[root@jiangnan ~]# readonly B=6
[root@jiangnan ~]# echo $B
6
# 不能对静态变量撤销
[root@jiangnan ~]# unset B
-bash: unset: B: cannot unset: readonly variable
[root@jiangnan ~]#
# 变量默认类型都是字符串类型,不能直接运算
[root@jiangnan ~]# C=1+2
[root@jiangnan ~]# echo $C
1+2
[root@jiangnan ~]# D=1
[root@jiangnan ~]# E=2
[root@jiangnan ~]# C=D+E
[root@jiangnan ~]# C=$D+$E
[root@jiangnan ~]# echo $C
1+2
[root@jiangnan ~]#
# 变量的值如果有空格,需要使用双引号或单引号括起来
[root@jiangnan ~]# H=I love China
-bash: love: command not found
[root@jiangnan ~]# H='I love China'
[root@jiangnan ~]# echo $H
I love China
[root@jiangnan ~]#
# 提升H为环境变量,可以在脚本中使用了
[root@jiangnan tomcat]# H='I love China'
[root@jiangnan tomcat]# export H
[root@jiangnan tomcat]# vi hello.sh
[root@jiangnan tomcat]# cat hello.sh
#!/bin/bash
echo $H
[root@jiangnan tomcat]# sh hello.sh
I love China
[root@jiangnan tomcat]#
3. 特殊变量
$n
n为数字,0代表脚本名称,1-9代表第一到第九个参数。十个以上的参数,需要用大括号包含,比如${10}
[root@jiangnan tomcat]# vi variable1.sh
[root@jiangnan tomcat]# cat variable1.sh
#!/bin/bash
echo "脚本名称为:"$0
echo "第1个参数为:"$1
echo "第10个参数为:"${10}
[root@jiangnan tomcat]# sh variable1.sh a b c d e f g h i g k l m n # 参数之间空格隔开
脚本名称为:variable1.sh
第1个参数为:a
第10个参数为:g
[root@jiangnan tomcat]#
$#
获取所有输入参数个数
[root@jiangnan tomcat]# cat variable2.sh
#!/bin/bash
echo "参数个数为:"$#
[root@jiangnan tomcat]# sh variable2.sh a b c
参数个数为:3
[root@jiangnan tomcat]#
这种通常用于循环。
$和$@
均表示所有的参数,但是$*把所有的参数看成一个整体,$@把每个参数区分对待
[root@jiangnan tomcat]# vi variable3.sh
[root@jiangnan tomcat]# cat variable3.sh
#!/bin/bash
echo $*
echo $@
[root@jiangnan tomcat]# sh variable3.sh a b c
a b c # 由$*获取
a b c # 由$@获取
[root@jiangnan tomcat]#
从这里看到都获取了全部参数,没有什么区别,但是在for循环的时候可以看出区别。
[root@jiangnan tomcat]# vi variable4.sh
[root@jiangnan tomcat]# cat variable4.sh
#!/bin/bash
for parameter1 in "$*"
do
echo "I love "$parameter1
done
for parameter2 in "$@"
do
echo "I love "$parameter2
done
[root@jiangnan tomcat]# sh variable4.sh beijing shanghai tianjin
I love beijing shanghai tianjin # $*把参数当成一个整体
I love beijing # $@把每个参数区别对待
I love shanghai
I love tianjin
[root@jiangnan tomcat]#
$*和$@使用了双引号变成了整体,看出了其中的区别。
$?
最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确了。
[root@jiangnan tomcat]# sh variable4.sh a b c
I love a b c
I love a
I love b
I love c
[root@jiangnan tomcat]# echo $?
0 # 返回0证明我的上一条命令sh variable4.sh a b c 执行成功了
[root@jiangnan tomcat]#
微信公众号先已开通,搜索 “江小南和他的小伙伴们” 就能找到我哦,各位小伙伴们可以关注一下,文章会进行同步更新,方便查看哦。
最后
以上就是年轻香氛为你收集整理的【Shell篇】常见shell变量用法,$n,$#,$*,$@,$?,$HOME,$PWD,$SHELL,$USERShell中的变量1. 系统变量2. 自定义变量3. 特殊变量的全部内容,希望文章能够帮你解决【Shell篇】常见shell变量用法,$n,$#,$*,$@,$?,$HOME,$PWD,$SHELL,$USERShell中的变量1. 系统变量2. 自定义变量3. 特殊变量所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复