当前位置:网站首页>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

边栏推荐
- Gorm-- search you don't know
- Related examples of data storage in memory
- Rust,程序员创业的最佳选择?
- Deep parsing and implementation of redis stream advanced message queue [10000 words]
- shell 运算符
- Cesium learning notes
- Discuz仿今日头条模板/Discuz新闻资讯商业版GBK模板
- JS prototype. slice. call(arguments); Convert pseudo array to array
- Asp.net WebForm使用NPOI导出Excel
- Prototype relationship between constructor and instance (1)
猜你喜欢

Drago Education - typescript learning

Rust, the best choice for programmers to start a business?

Beego--- notes

戴尔电脑cpu温度过高怎么办

论文阅读:Graph Contrastive Learning with Augmentations

Nr-arfcn and channel grid, synchronous grid and GSCN

Application of tactile intelligent sharing-rk3568 in financial self-service terminal

On the realization of guessing numbers game

Prototype and prototype chain - constructor and instanceof

解决报错:Creating window glfw ERROR: GLEW initalization error: Missing GL version
随机推荐
How to solve SQL import
【开源鸿蒙系统展示】RK3568开发板搭载OpenHarmony 3.1 Release
Discriminative v.s.Generative
Is it unsafe to make new debts
Cold migration and resize of Nova component source code analysis
深入理解深度神经网络背后的数学(Mysteries of Neural Networks Part I)
Websocket -- reverse proxy to solve cross domain problems
如何在 2022 年为 Web 应用程序选择技术堆栈
Untiy force refresh UI
一次性讲清楚 Handler 可能导致的内存泄漏和解决办法 | 开发者说·DTalk
Kubernetes cluster construction of multiple ECS
多台云服务器的 Kubernetes 集群搭建
用NumPy实现神经网络(Mysteries of Neural Networks Part III)
Cesium model Daquan glb/glft format
Graph contractual learning with augmentations
Vscode--- format setting configuration
启牛是正规的吗?股票开户安全吗?
关于STM32使用LAN8720A插拔网线重连
英語中的九大詞性與九大時態
Openstack learning notes (I)