Shell-变量介绍

1、基础知识

1.1、简单介绍

变量包括两部分:变量名(不变的) + 变量值(变化的)
表现样式:变量名=变量值
功能定位: 通过变量名的调用,达到快速执行批量的效果

1.2、注意事项

变量的全称应该成为变量赋值,简称变量,在工作中,我们一般只xx是变量,其实是是将这两者作为一个整体来描述了。准确来说,我们一般所说的变量其实指的是:变量名。

1.3、shell变量分类

1.3.1、本地变量

变量名仅仅在当前终端有效

1.3.2、全局变量

变量名在当前操作系统的所有终端都有效 

1.3.3、shell内置变量

shell解析器内部的一些功能参数变量

2、变量详解

2.1、本地变量【=】

本地变量就是:在当前系统的某个环境下才能生效的变量,作用范围小。
本地变量包含两种:普通变量和命令变量

2.1.1、普通变量

类型      样式               特点
无引号    变量名=变量值      变量值必须是一个整体,中间没有特殊字符 "=" 前后不能有空格
单引号    变量名='变量值'    原字符输出
双引号    变量名="变量值"    变量值先解析,后整合

习惯:数字不加引号,其他默认加双引号

2.1.2、命令变量

类型       样式              特点
反引号     变量名=`命令`     ``反引号
小括号     变量名=$(命令)    $()

执行流程:
1、执行`或者$()范围内的命令
2、将命令执行后的结果,赋值给新的变量名A

2.2、全局变量【export、unset】

2.2.1、什么是全局变量

在当前系统的所有环境下都能生效的变量,可以基于env命令查看

2.2.2、定义方法

# 设置值
export 变量=# 查看
$变量名 、"$变量名"、${变量名}、"${变量名}"

# 取消
unset 变量名

2.3、内置变量

2.3.1、属性含义

复制代码
符号     意义
$0       获取当前脚本文件名            
$n       获取脚本的第n个参数值,样式:$1,${10}
$#       获取脚本参数的总个数 
$?       获取上一个指令的状态返回值(0为成功,非0为失败)
$*       获取所有参数,存放到一个字符串中 
$@       获取所有参数,存放到一个列表里面
$$       获取当前程序进程号 
$!       获取上一个进程的id
复制代码

2.3.2、$0【获取脚本的名称】

cat << 'CAT_END' > test.sh 
#!/bin/bash
echo "脚本名字: $0"
CAT_END

# sh test.sh  
脚本名字: test.sh

2.3.3、$n【获取位置参数值】

复制代码
cat << 'CAT_END' > test.sh 
#!/bin/bash
echo "one parmer1: $1"
echo "two parmer1: $2"
CAT_END

# sh test.sh ptest1 ptest2
one parmer1: ptest1
two parmer1: ptest2
复制代码

2.3.4、$#【获取参数总数量】

cat << 'CAT_END' > test.sh 
#!/bin/bash
echo "parmer count number $#"
CAT_END

# sh test.sh ptest1 ptest2
parmer count number 2

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

# bash test
/usr/bin/test: /usr/bin/test: 无法执行二进制文件
# echo $?
126
# ls# echo $? 0

2.3.6、$$【获取shell脚本运行进程id】

cat << 'CAT_END' > test.sh 
#!/bin/bash
echo "pid $$"
CAT_END

# sh test.sh 
pid 34956

2.3.7、$!【获取上一条命令的进程号】

# sleep 15 &
[1] 34963

# echo $!
34963

2.4、$@ 与 $* 的区别实践

复制代码
cat << 'CAT_END' > test.sh 
#!/bin/bash
# string
for arg in "$*";do
  echo '$*获取到的参数内容:' $arg
done

# list
for arg in "$@";do
  echo '$@获取到的参数内容:' $arg
done
CAT_END


# sh test.sh p1 p2
$*获取到的参数内容: p1 p2
$@获取到的参数内容: p1 $@获取到的参数内容: p2
复制代码

 

posted @   小粉优化大师  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
点击右上角即可分享
微信分享提示