shell脚本中循环的变量无法全局生效
说明
我们在编写shell脚本时,发现shell脚本中定义的while循环中定义的变量无法作用于全局,这是因为我们使用while循环时,创建了subshell,当subshell退出后,变量值就回收了。
示例
#!/bin/bash
function get_chart_list() {
helm list | while read line
do
if [[ $line =~ ^test.* ]]; then
chart=$(echo ${line#*test-*})
fi
done
}
get_chart_list
echo $chart
执行时,发现chart变量输出为空值。
修复方案
这里使用shell的process substitution来解决:
#!/bin/bash
function get_chart_list() {
while read -r line
do
if [[ $line =~ ^test.* ]]; then
chart=$(echo ${line#*test-*})
fi
done < <(helm list)
}
get_chart_list
echo $chart
shell脚本中循环的变量无法全局生效的更多相关文章
- shell脚本中特定符合变量的含义
shell脚本中特定符合变量的含义: $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程PID号 ...
- shell脚本中一些特殊变量
在shell脚本中,一些常见的特殊变量表示方式还是需要知道的 如下就是一些经常用到的特殊变量表示方法: $0 当前脚本名$1 $2... 传入脚本or函数的参数(大于10需大括号括起来)$ ...
- Shell脚本中循环语句for,while,until用法
循环语句: Bash Shell中主要提供了三种循环方式:for.while和until. 一.for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区 ...
- shell脚本中定义路径变量出现的BUG
=========================================================================== if 语句中的定义路径变量 引发命令的PATH路 ...
- shell脚本中使用nohup执行命令不生效
1 例如 !#/bin/bash nohup echo "hello world" 2 解决办法 加上 source /etc/profile 就好了 !#/bin/bash so ...
- Shell脚本中变量和函数变量的作用域
(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变 ...
- shell脚本中局部变量local
shell脚本中局部变量 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是gl ...
- 让shell脚本中的echo输出带颜色
转载自:http://www.linuxidc.com/Linux/2014-12/110463.htm 让echo输出带颜色的方法有两种 1.在shell脚本中定义颜色变量,使用echo -e调用变 ...
- 在shell脚本中进行条件控制以及使用循环
转载请标明:http://www.cnblogs.com/winifred-tang94/ if条件语句语法: if [ 条件表达式 ] then 代码 else 代码 fi 注意:在上面的if条件语 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
随机推荐
- http://eslint.org/docs/rules/semi
报错: Errors: 88 http://eslint.org/docs/rules/semi 56 http://eslint.org/docs/rules/quotes 34 http://es ...
- .NET 环境下的三维渲染库 HelixToolkit.SharpDX
1. 引言 在 .NET 生态系统中,三维渲染一直是开发者面临的一个挑战.虽然 WPF 提供了基础的 3D 渲染支持,但性能和功能都较为有限.而 HelixToolkit.SharpDX 作为一款基于 ...
- gmpy2库
在密码计算中会牵扯大素数的计算模逆等,gmpy2库就是一个这种库 求整数a.b的最大公因数 a = gmpy2.gcd(3,12) 判断一个数是否为素数 a = gmpy2.is_prime(5) 判 ...
- 小白快速了解的Java知识!
Java初学习 1.Java的诞生与崛起 1972年,c语言诞生,其高效率,运行速度快让大批程序员为之倾倒,但是c语言的指针及其内存管理需要程序员自行操作,浪费了大量的时间以及精力,再加上c语言需要尽 ...
- LLMOps MLOPS
https://www.redhat.com/en/topics/ai/llmops https://www.redhat.com/en/topics/cloud-computing/what-is- ...
- 使用Python解决三体问题
引言 在物理学中,三体问题是一个经典的动态系统问题,它描述了三个天体之间的相互引力作用和运动规律.三体问题最著名的挑战在于它无法通过简单的解析公式来解决,换句话说,三体问题是一个不可解析的问题.尽管如 ...
- Redis使用IO多路复用进行事件处理机制
一.epoll多路复用 这里重点要说的就是redis的IO编程模型,首先了解下 为什么要有多路复用呢 ? 案例 引用知乎上一个高赞的回答来解释什么是I/O多路复用.假设你是一个老师,让30个学生解答一 ...
- 40+程序员亲历AI冲击,出路在何方?
关注[智践行],我们一起成长 技术革新从不以人的意志为转移,但却能因个人的选择而重铸职业轨迹,AI崛起的当下,程序员的命运之笔正握在自己手中. 今年春节前后,AI界热闹非凡,各种大模型的新突破.超强的 ...
- DPDI(Dispatch PDI)kettle调度管理平台之实操演练第003讲-数据通途:客户端连接SQL Server的完美攻略
SQL Server简介 基本概念 SQL Server是由微软公司开发的关系型数据库管理系统.它基于SQL(Structured Query Language,结构化查询语言)来管理和操作数据.SQ ...
- 在 Go 语言中,构造一个并发安全的 map 集合
Map 集合是 Go 中提供的一个 KV 结构的数据类型,对它的操作在实际的开发中应该是非常多的,不过它不是一个线程安全的. 1 .Map 不是线程安全的 编写下面的测试代码: func TestUn ...