我是靠谱客的博主 年轻香氛,最近开发中收集的这篇文章主要介绍【Shell篇】常见shell变量用法,$n,$#,$*,$@,$?,$HOME,$PWD,$SHELL,$USERShell中的变量1. 系统变量2. 自定义变量3. 特殊变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 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. 特殊变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部