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

边栏推荐
- QT memory mapping
- Rust, the best choice for programmers to start a business?
- untiy强制刷新UI
- None of the MLIR Optimization Passes are enabled (registered 2)解决办法
- Nova组件源码分析之冷迁移与Resize
- 国信证券股票开户是安全的吗?
- Mise en place d'un Cluster kubernets avec plusieurs serveurs Cloud
- 数据库中显示error1822,error1824
- SSH secret free function for # scripting
- [open source Hongmeng system display] the rk3568 development board is equipped with openharmony 3.1 release
猜你喜欢

电脑必须打开的设置

楼宇自动化专用BACnet网关BL103

Graph contractual learning with augmentations

多臺雲服務器的 Kubernetes 集群搭建

Beego--- notes

What if the CPU temperature of Dell computer is too high

Getting started with numpy Library

网络远程访问的方式使用树莓派
![Leetcode: Sword finger offer II 091 Painting house [2D DP]](/img/d7/dc8a3522dbd58b4573cfd75497460c.png)
Leetcode: Sword finger offer II 091 Painting house [2D DP]

How to determine if a web worker has been created or closed
随机推荐
Openstack learning notes -nova component insight
请问通达信股票开户是安全的吗?
Openstack learning notes (I)
解决报错:Creating window glfw ERROR: GLEW initalization error: Missing GL version
Numpy库使用入门
Rust, le meilleur choix pour un programmeur de démarrer une entreprise?
‘nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
API in Nova
Nova中的api
Discuz copy today's headlines template /discuz news and information business GBK template
Table de hachage, conflit de hachage
leetcode:918. Maximum sum of circular subarray [reverse thinking + maximum subarray sum]
How does hash eagle, the founder of equity NFT, redefine NFT and use equity to enable long-term value?
What are the red lines of open source that should not be trodden on?
leetcode:456. 132 模式【单调栈】
Insight into heap and stack stored in new string() /string() in JS
關於一道教材題的講解
Discuz仿今日头条模板/Discuz新闻资讯商业版GBK模板
sigmoid函数sigmoid求导
Download File blob transcoding