当前位置:网站首页>shell 变量 入门
shell 变量 入门
2022-06-25 13:32:00 【响彻天堂丶】
1 自定义全局变量
2.1 父子Shell环境介绍
例如: 有2个Shell脚本文件 parent.sh 和 child.sh
如果 在 parent.sh 脚本文件中执行了child.sh脚本文件, 那么parent.sh就是父Shell环境, child.sh就是子Shell环境
2.2 自定义全局变量介绍
就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用
2.3 自定义全局变量语法
export var_name1 var_name2
2.4 DEMO
测试全局变量在子Shell中是否可用, 在父Shell中是否可用
1: 创建2个脚本
touch parent.sh
touch child.sh
2:修改parent脚本文件
vi parent.sh
#!/bin/bash
name="parentName"
export name
#调用子脚本文件
sh child.sh
3: 修改child脚本文件
vi child.sh
#!/bin/bash
echo "parent 中定义的name: ${name}"
4: 执行父脚本
sh parent.sh
5: 结果
2 特殊变量 $n
2.1 语法
$n
2.2 含义
用于接收脚本文件执行时传入的参数
$0 用于获取当前脚本文件名称的
$1~$9, 代表获取第一输入参数到第9个输入参数
第10个以上的输入参数获取参数的格式: ${
数字}, 否则无法获取
2.3 执行脚本文件传入参数语法
sh 脚本文件 parm1 parm2 ...
2.4 demo
创建脚本文件demo.sh文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数
vim demo.sh
#!/bin/bash
#打印当前脚本文件名称
echo "当前脚本文件名称: ${0}"
#打印输入参数
echo "第一个输入参数: ${1}"
echo "第二个输入参数: ${2}"
执行:
3 特殊符号变量 $#
3.1 语法
$#
3.2 含义
获取所有输入参数的个数
3.3 demo
打印demo.sh输入参数的个数。
vim demo.sh
#!/bin/bash
#打印当前脚本文件名称
echo "当前脚本文件名称: ${0}"
#输入参数的个数为
echo "输入参数的个数为: ${#}"
#打印输入参数
echo "第一个输入参数: ${1}"
echo "第二个输入参数: ${2}"
4 特殊变量 $* [email protected]
4.1 语法
$*、[email protected]
4.2 含义
1.不使用双引号括起来, 功能一样
$*和[email protected]获取所有输入参数,格式为: $1 $2 ... $n
2.使用双引号括起来
"$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
"[email protected]"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
使用循环打印所有输入参数可以看出区别
循环语法:
for var in 列表变量
do # 循环开始
命令 # 循环体
done # 循环结束
4.3 demo
在demo.sh中循环打印输出所有输入参数, 体验$*
与[email protected]
的区别
#!/bin/bash
#打印当前脚本文件名称
echo "当前脚本文件名称: ${0}"
#输入参数的个数为
echo "输入参数的个数为: ${#}"
#输出所有输入后的参数
echo '使用$*直接输出:' ${
*}
echo '使用[email protected]直接输出:' ${
@}
#循环输出
echo '循环遍历输出$*所有参数:'
for temp in "$*"
do
echo ${
temp}
done
echo '循环遍历输出[email protected]所有参数:'
for temp in "[email protected]"
do
echo ${
temp}
done
5 特殊符号变量 $?
5.1 命令
$?
5.2 含义
用于获取上一个Shell命令的退出状态码, 或者是函数的返回值
5.3 demo
边栏推荐
- Cesium learning notes
- JS prototype. slice. call(arguments); Convert pseudo array to array
- Windows下MySQL的安装和删除
- 打新债是不是不安全
- 触觉智能分享-RK3568在金融自助终端的应用
- sql导入这样怎么解决
- golang项目依赖管理工具go vendor,go mod
- Vscode--- format setting configuration
- Discuz copy today's headlines template /discuz news and information business GBK template
- Hash table, hash conflict
猜你喜欢
多台云服务器的 Kubernetes 集群搭建
Where can the brightness of win7 display screen be adjusted
NR-ARFCN和信道栅格、同步栅格和GSCN
一次性讲清楚 Handler 可能导致的内存泄漏和解决办法 | 开发者说·DTalk
Openstack learning notes (I)
作为一名软件测试工程师你认为怎么样才能保证软件质量?
[proteus simulation] 51 MCU +ds1302+lcd1602 display
Implementation of a small book system
DE2-115 FPGA开发板的VGA显示
Mise en place d'un Cluster kubernets avec plusieurs serveurs Cloud
随机推荐
Data acquisition system gateway acquisition plant efficiency
初始c语言时的一些知识
Dialogue: recommended system quick start route and summary of knowledge points
‘nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
国信证券股票账户开户安全吗?请问。
论文阅读:Graph Contrastive Learning with Augmentations
Preventing overfitting of deep neural networks (mysteries of neural networks Part II)
Application of tactile intelligent sharing-rk3568 in financial self-service terminal
go---- mgo
完整详细的汇编实验报告
turtlebot+lms111+gmapping实践
Nova组件源码分析之冷迁移与Resize
Explain the possible memory leaks caused by the handler at one time and the solutions | the developer said · dtalk
Windows下MySQL的安装和删除
OpenStack学习笔记(一)
Nr-arfcn and channel grid, synchronous grid and GSCN
作为一名软件测试工程师你认为怎么样才能保证软件质量?
Drago Education - typescript learning
Explanation of a textbook question
Explication d'un problème de manuel