美文网首页
Shell变量

Shell变量

作者: 村东头老骥 | 来源:发表于2020-02-07 10:54 被阅读0次

Shell 变量

变量的分类

  • 本地变量
  • 全局变量
  • shell 内置变量

本地变量

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

  • 普通变量
  • 命令变量

普通变量

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

命令变量

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

全局变量

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

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

变量查看和取消

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

取消变量

unset 变量名

Shell内置变量

  • $0 获取当前执行的shell脚本文件名
  • $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大 括号括起来${10}
  • $# 获取当前shell命令行中参数的总个数
  • $? 获取执行上一个指令的返回值(0为成功,非0为失败)

$0 获取脚本的名称

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

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

  • $n 获取当前脚本传入的第n个位置的参数
#!/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个字符

变量的默认值

  • 变量a如果有内容,那么就输出a的变量值
  • 变量a如果没有内容,那么就输出默认的内容
${变量名:-默认值}

套餐示例

  • 如果我输入的参数为空,那么输出内容是 "您选择的套餐是: 套餐 1"
  • 如果我输入的参数为n,那么输出内容是 "您选择的套餐是: 套餐 n"
#!/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

条件测试

格式

  • test 条件表达式
  • [ 条件表达式 ]
  • [[ 条件表达式 ]]
判断是否是一个目录
[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 $?

相关文章

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • Shell常用命令(md格式方便阅读和复制粘贴)

    Shell Shell中的变量 系统变量 自定义变量 自定义变量规则 Shell特殊变量 运算符 条件判断 基本语...

  • shell第11章shell脚本

    什么是shell? Bash shell: 什么是shell脚本? 变量的介绍: 普通变量介绍: 环境变量介绍: ...

  • shell变量详解

    本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...

  • linux shell中常见的变量含义解释

    linux shell中常见变量含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell...

  • Shell特殊变量

    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含...

  • Shell变量

    Shell 变量 变量的分类 本地变量 全局变量 shell 内置变量 本地变量 本地变量就是:在当前系统的某个环...

  • bash环境变量

    环境变量是全局变量 自定义变量是局部变量 bash:可以进入当前shell的子shell(当前shell指的是当前...

  • shell

    shell变量 变量类型:局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程...

网友评论

      本文标题:Shell变量

      本文链接:https://www.haomeiwen.com/subject/qeqmxhtx.html