Shell变量

2020-02-07  本文已影响0人  村东头老骥

Shell 变量

变量的分类

本地变量

本地变量就是:在当前系统的某个环境下才能生效的变量,作用范围小。
本地变量的分类

普通变量

方式一:
  变量名=变量值 
  重点:变量值必须是一个整体,中间没有特殊字符 
方式二:
  变量名='变量值' 
  重点:我看到的内容,我就输出什么内容 
方式三:
  变量名="变量值" 
  重点:如果变量值范围内,有可以解析的变量A,那么首先解析变量A,将A的结果和其他内容组合成一个整体,重 新赋值给变量B

命令变量

定义方式一:
  变量名=`命令` 
  注意:` 是反引号 
 定义方式二:
   变量名=$(命令)

全局变量

全局变量就是:在当前系统的所有环境下都能生效的变量。
查看全局变量命令 可以通过命令查看环境变量 env
定义全局变量

方法一:
    变量=值 export 变量 
方法二:
  (最常用) export 变量=值

变量查看和取消

方式一:$变量名 场景:私下里,在命令行/脚本中使用 图省事 
方式二:"$变量名" 场景:私下里,在命令行/脚本中使用 图省事 
方式三:${变量名} 场景:echo " dsa dsafsa dsafsa ${变量名} f " 使用频率较高 
方式四:"${变量名}" 场景:标准使用方式

取消变量

unset 变量名

Shell内置变量

$0 获取脚本的名称

#!/bin/bash 
# 获取脚本的名称 
echo "我脚本的名称是: file.sh" 
echo "我脚本的名称是:$0"

$# 获取当前脚本传入参数的数量

#!/bin/bash 
# 获取当前脚本传入的参数数量 
echo "当前脚本传入的参数数量是: $#" 
# 获取指定位置的参数 
echo "第一个位置的参数是: $1" 
echo "第二个位置的参数是: $2" 
echo "第三个位置的参数是: $3" 
echo "第四个位置的参数是: $4"

$? 获取文件执行或者命令执行的返回状态值

# bash nihao bash: nihao: No such file or directory 
# echo $? 127 
# ls 
file1.sh num.sh test.sh weizhi.sh 
# echo $? 0

字符串的精度获取

格式:${变量名:起始位置:截取长度}

示例

${file:0:5} 从第1个字符开始,截取5个字符 
${file::5} 从第1个字符开始,截取5个字符 
${file:5:5} 从第6个字符开始,截取5个字符 
${file:5} 从第6个字符开始,截取后面所有的字符 
${file:0-5} 从倒数第5个字符开始,截取后面所有的字符 
${file:0-6:3} 从倒数第6个字符开始,截取之后的3个字符

变量的默认值

${变量名:-默认值}

套餐示例

#!/bin/bash 
# 套餐选择演示 
a="$1" 
echo "您选择的套餐是: 套餐 ${a:-1}"

无论变量a是否有内容,都输出默认值
格式

${变量名+默认值}

场景示例:不管我说国家法定结婚年龄是 多少岁,都输出 国家法定结婚年龄(男性)是 22 岁

#!/bin/bash 
# 默认值演示示例二 
a="$1" 
echo "国家法定结婚年龄(男性)是 ${a+22} 岁"

变量的运算

[root@localhost shell]# n=$(expr 1 + 2)
[root@localhost shell]# echo $n
3
[root@localhost shell]# echo $[1+2]
3
[root@localhost shell]# echo $[ 1 + 2 ]
3
[root@localhost shell]# echo $((1+2))
3

条件测试

格式

判断是否是一个目录
[root@localhost shell]# test -d /home/| echo $?
0
判断是否为一个文件
[root@localhost shell]# test -f ./test.sh| echo $?
0
判断是否是可执行文件
[root@localhost shell]# test -x ./test.sh| echo $?
0
判断是否为当前用户的文件
[root@localhost shell]# test -O ./test.sh| echo $?
0
判断文件是否存在
[root@localhost shell]# test -e ./test.sh| echo $?
0
判断文件是否可读
[root@localhost shell]# test -r ./test.sh| echo $?
0
判断变量的长度
[root@localhost shell]# say=hello
[root@localhost shell]# test -z $say | echo $?
1
[root@localhost shell]# no=''
[root@localhost shell]# test -z $no | echo $?
0
判断变量是否被定义
[root@localhost shell]# hello=word
[root@localhost shell]# test -z $hello | echo $?
上一篇下一篇

猜你喜欢

热点阅读