首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从字符串中解析变量,并使用Bash将它们添加到数组中

,可以通过以下步骤实现:

  1. 首先,将字符串分割为多个变量。可以使用Bash的内置命令readIFS(Internal Field Separator)来实现。假设字符串为str="var1=value1 var2=value2 var3=value3",可以使用以下代码将其分割为多个变量:
代码语言:txt
复制
IFS=' ' read -ra vars <<< "$str"

这将把字符串按空格分割,并将每个变量存储在数组vars中。

  1. 接下来,遍历数组并解析每个变量。可以使用循环来遍历数组,并使用=作为分隔符将每个变量分割为名称和值。然后,将它们存储在关联数组中,其中名称作为键,值作为对应的值。以下是示例代码:
代码语言:txt
复制
declare -A parsed_vars
for var in "${vars[@]}"; do
    IFS='=' read -r name value <<< "$var"
    parsed_vars["$name"]="$value"
done

这将解析每个变量,并将其存储在关联数组parsed_vars中。

完成上述步骤后,你将得到一个包含解析后变量的关联数组parsed_vars,其中每个变量的名称作为键,对应的值作为值。你可以根据需要进一步处理这些变量,例如将它们添加到其他数组中或执行其他操作。

请注意,以上代码仅适用于Bash环境,并假设字符串中的变量以name=value的形式出现,并且名称和值之间没有空格。如果字符串的格式不同,你可能需要根据实际情况进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 按规则解析替换字符串变量及函数

按规则解析替换字符串变量及函数 需求 1、按照一定规则解析字符串的函数、变量表达式,替换这些表达式。...__打头 ${ 之间不能有空格 函数名称和函数的左括号 ( 之间不能有空隔 函数支持嵌套,形如:{ __function1( {__function2()} )} 函数参数如果是字符串(包括由嵌套函数返回值...),需要使用单引号、双引号引用 形如 { __function1( "str_value", 123)} , 函数参数支持python原生函数 形如 ${ __function1( set([1,2,3...) # 用于获取动态值变量表达式 REGEX_PATTERN_FOR_FUNC_DEFINITION = re.compile('\${\s*__.+?...user_name = 'shouke' addr = 'unknown' int_var = 3 def evaluate_dynamic_value(dynamic_value): '''解析动态值

30740
  • Linux:进程概念(四.main函数的参数、环境变量及其相关操作)

    -e:启用转义字符的解析,可以让 echo 打印一些特殊字符,如换行符 \n、制表符 \t 等。 -E:禁用转义字符的解析反斜杠 \ 作为普通字符处理。...它通常定义在 头文件。environ 是一个指向字符串数组的指针,每个字符串都表示一个环境变量。...extern char **environ; 表示声明了一个全局变量 environ,表明该变量在当前文件并没有定义,而是在其他文件定义的。...2.6添加或者修改环境变量 putenv 是 C 语言中的一个库函数,它定义在 头文件。这个函数用于字符串添加到环境变量,或者修改已经存在的环境变量的值。...如果 string 指向的字符串成功添加到环境变量,或者成功修改了已经存在的环境变量的值,那么 putenv 函数返回 0。如果发生错误,返回非零值。

    11600

    Docker学习笔记---Dockerfile

    该LABEL指令元数据添加到图像。A LABEL是一个键值对。要在LABEL值包含空格,请使用引号和反斜杠,就像在命令行解析中一样。...任何其他参数必须单独表示为数组字符串: FROM ubuntu CMD ["/usr/bin/wc","--help"] CMD指令应用与运行镜像中所包含的软件,及其参数。...注: 该ENV指令环境变量设置为该值 。该值处于所有“后代” Dockerfile命令的环境 该ENV指令有两种形式。第一个表单ENV 将会将一个变量设置为一个值。...使用ENV来更新容器的环境变量PATH,例如:ENV PATH /usr/local/nginx/bin:$PATH确保CMD [“nginx”]工作正常。...可以指定多个资源,但如果它们是文件或目录,则它们必须相对于正在构建的源目录(构建的上下文)。 每个可能包含通配符,使用Go的filepath.Match规则进行匹配 。

    70010

    Bash基础训练指南

    Bash 用户输入 在前面的脚本,我们定义了一个变量使用 echo $name 在屏幕上输出该变量的值。 我们接着往下,这次接受用户的输入请求。修改 test.sh 脚本如下: #!...上面的代码提示用户输入,然后将用户输入的作为字符串/文本存储在变量。 然后,我们可以使用变量并向它们返回一条消息。 以上脚本的输出过程为: 首先运行脚本: ....Bash 数组 如果你曾经做过任何编程,你可能已经熟悉数组。但为了防止你不是开发人员,与变量不同,数组可以在一个名称下保存多个值。 可以通过值赋值给由空格分隔包含在()来初始化数组。...例子: my_array=("value 1" "value 2" "value 3" "value 4") 要访问数组的元素,需要通过它们的数字索引来引用它们。 注意:请记住需要使用花括号。...在bash,[[ 复合命令和 [ 内置命令使用条件表达式来测试文件属性执行字符串和算术比较。

    2.2K10

    【linux】环境变量

    01.命令行参数 这段C语言程序展示了如何通过 main 函数接收和打印命令行参数 使用一个for循环遍历0到argc-1的所有索引,argc 表示命令行传入的参数数量。...如果没有执行权限,返回权限错误。 ls可以直接使用,我们的命令必须带上....每次循环索引 i 自增1,以便访问环境变量数组的下一个元素 每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串 环境变量默认也是可以被子进程拿到的...例如,执行 echo HOME 时,echo 内建命令可以直接访问展开 HOME 环境变量,显示当前用户的主目录路径。 你可以使用 type 命令在 Bash 检查一个命令是否是内建的。...环境变量 定义和作用域:环境变量通过使用 export 命令在 Bash 设置,这使得它们不仅在当前 shell 中有效,还可以被任何子进程继承。

    6910

    Bash 编程

    例如: math_lines=$(cat math.sh | wc -l) echo $math_lines # 7 带有美元符号的变量名也可以在其他字符串使用,以便变量的值插入到字符串: echo...Bash语句的写法可能与其他的语言有所不同,但使用并无差别。 数组 Bash数组是值的有序列表 。可以通过列表赋值给变量名从头创建列表。列表是用圆括号()创建的,用空格 分隔列表的每个元素。...有一个非常方便的工具,可以称为大括号展开 的序列创建字符串。...后面是执行文件的代码的程序的路径。表示我们想使用Bash的shebang是#!/usr/bin/env bash,我们已经把它添加到脚本的开头有一段时间了!...然后我们将在~/.bash_profile添加一行,以便Commands添加到PATH。

    4.4K30

    Shell 快速指南

    这样写还有一个好处,操作系统的PATH变量有可能被配置为指向程序的另一个版本。比如,安装完新版本的bash,我们可能将其路径添加到PATH,来“隐藏”老版本。如果直接用#!...非交互模式 简单来说,你可以 shell 的非交互模式理解为执行 shell 脚本。 在非交互模式下,shell 文件或者管道读取命令执行。...变量 跟许多程序设计语言一样,你可以在 bash 创建变量Bash 没有数据类型,bash 变量可以保存一个数字、一个字符、一个字符串等等。...数组 跟其它程序设计语言一样,bash数组变量给了你引用多个值的能力。在bash数组下标也是0开始,也就是说,第一个元素的下标是0。 跟数组打交道时,要注意一个特殊的环境变量IFS。...举个例子,如果我们想把所有的.bash文件移动到script文件夹它们可执行权限,我们的脚本可以这样写: #!

    3.3K101

    Powershell变量

    Bash shell,该数据可以是单词(计算机语言中的字符串)或数字(整数)。 也许你以前从未(有意地)在计算机上使用变量,但你可能在生活的另一个领域中使用变量。...但是,Windows会自动“/”转换为“\”,并且所有示例都可以在所有平台上运行,只要你替换明显的差异(例如,统计角度上讲,你的用户名不太可能设置为seth)。 变量是为了什么?...但是,知识就是力量,而了解变量Bash的工作方式可以使你获得各种意想不到的创造性问题解决方案。 设置变量 你不需要特殊权限即可创建变量它们可免费创建,免费使用且通常无害。...在PowerShell变量具有多种类型,包括字符串,整数和数组。 选择创建一个实质上具有多个值的变量时,必须确定是否需要用字符分隔的字符串数组。...要将数据附加到字符串变量,请使用“+ =”语法: 屏幕快照 2019-11-24 下午6.02.37.png 数组是PowerShell的特殊类型的变量,需要ArrayList对象。

    3K00

    Shell基础入门

    Centos默认的解析器是bash echo $SHELL 含义: 打印输出当前系统环境使用的Shell解析器类型 echo 用于打印输出数据到终端 $SHELL 是全局共享的读取解析器类型环境变量...在bash环境变量的默认类型都是字符串,无法直接进行数值运算。 变量的值如果有空格,必须使用双引号括起来。 不能使用Shell的关键字作为变量名称。...默认换行语法:echo 字符串 不换行语法:echo -n 字符串 输出转义字符:echo -e '字符串中含有转义字符' read读取控制台输入 read 是 Shell 内置命令,用于标准输入读取数据赋值给变量.../bin/bash # 使用read命令读取数据,要有提示信息 "请输入姓名, 年龄, 爱好" 数据赋值给多个变量 read -p "请输入姓名....a array 设置为普通索引数组 A Array 设置为key-vajue关联数组 r readonly 变量设置为只读,也可以使用 readonly x exprot 设置变量成为环境变量,也可以使用

    2.4K31

    【rainbowzhou 面试26101】基础提问--shell 是否支持多维数组?为什么?

    非交互式执行是指脚本保存为一个文件,然后在终端中直接运行该文件。非交互式执行通常使用 ./filename 的方式来运行脚本。 5. 介绍一下Shell脚本变量?...Shell脚本变量可以存储任意类型的数据,包括字符串、数字、数组等。变量以字母或下划线开头,后面紧跟着变量名即可定义一个变量。..." "cherry") # 定义一个字符串数组变量array,值为["apple","banana","cherry"] 在Shell脚本可以使用 符号来引用变量,例如 name 可以输出变量 name...性能上的考虑,因为Shell是一个解释型的语言,每次执行脚本都需要解释器来解析和执行,如果支持多维数组,可能会增加解释器的负担和内存消耗。...兼容性上的考虑,因为Shell有很多种实现,例如Bash、Ksh、Zsh等,它们之间有一些共同的标准,也有一些各自的扩展,如果支持多维数组,可能会导致不同的Shell之间的差异和不兼容。

    1.3K30

    shell 教程,这次我要步步详解,学会了以后能早点下班

    这种方式比较适合字符串附带有变量和命令并且想将其解析后再输出的变量定义。...下面的代码使用 cat 命令 log.txt 的内容读取出来,赋值给一个变量,然后使用 echo 命令输出。...有读者可能会问,如果我想让一个变量在所有 Shell 进程中都有效,不管它们之间是否存在父子关系,该怎么办呢? 只有变量写入 Shell 配置文件才能达到这个目的!...#直接输出字符串 echo $url #输出变量 echo "${name}的网址是:${url}" #双引号包围的字符串可以解析变量 echo '${name}的网址是:${url}' #单引号包围的字符串不能解析变量...: 在 Shell 你不需要使用任何运算符,两个字符串并排放在一起就能实现拼接,非常简单粗暴。

    4.2K20

    【Linux】Linux环境变量的理解 --- 命令行参数、shell子进程、环境变量、本地变量

    2.程序路径添加到PATH环境变量里面(不带./运行自己写的程序) 1. 为什么在/usr/bin路径下的程序,系统就可以找到呢?...which指令在底层实现上实际就是环境变量PATH下的路径当中搜索的,帮助我们查找对应的指令路径,如果我们的程序所在路径也被添加到了PATH,那么which也就可以查到我们所写的程序了。...如下,我们在终端输入两次bash命令后使用ps --forest查看进程嵌套关系可以看出父shell和子shell的关系 本文第三部分shell进程的部分内容转载自csdn博主ONLY_MIT的文章...)都会涉及到使用环境变量,所以这些指令(子进程)必须继承父进程bash的环境变量,以满足不同的使用场景。.../mycmd也是一个字符串,所以argc代表的就是字符串的个数,argv指针数组的指针,指向的就是这些字符串,通过程序运行结果和代码,可以证明这个结论,argv数组打印出来的值实际上就是这些字符串

    2.1K31

    Linux Shell基础篇二 - 变量

    系统级环境变量:Shell环境加载全局配置文件变量共享给所有用户所有Shell程序使用,全局共享 用户级环境变量:Shell环境加载个人配置文件变量共享给当前用户的Shell程序使用,登录用户使用...在bash环境, 变量的默认类型都是字符串类型, 无法直接进行数值运算 变量的值如果有空格, 必须使用双引号括起来 不能使用Shell的关键字作为变量名称 变量的取值: 12345 # 语法1: 直接使用变量名查询...但字符串不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。.../旧字符串/新字符串} 字符串替换成新字符串,仅替换第一个 ${path/sbin/SBIN}sbin替换成SBIN,仅替换第一个 ${变量名//旧字符串/新字符串} 字符串替换成新字符串,替换所有...]} #获取数组所有元素,也可以使用${arr[*]}${#arr[@]} #获取数组的长度或个数,也可以使用${#arr[*]}${#arr[1]} #获取数组索引1元素的字符长度 拼接:

    2.8K51

    JSON神器之jq使用指南指北

    --slurp/ -s: 不要为输入的每个 JSON 对象运行过滤器,而是整个输入流读入一个大数组只运行一次过滤器。 --raw-input/ -R: 不要将输入解析为 JSON。...--arg name value: 此选项值作为预定义变量传递给 jq 程序。如果您使用 运行 jq --arg foo bar,则foo在程序可用具有值"bar"。...如果您尝试字符串添加到对象,您将收到一条错误消息并且没有结果。 添加:+ 运算符+采用两个过滤器,将它们都应用于相同的输入,然后结果相加。...(对于递归合并,请使用*运算符。) null可以添加到任何值,返回其他值不变。 减法:- 除了对数字进行普通算术减法外,该- 运算符还可用于数组第一个数组删除第二个数组元素的所有出现。...数组模式变量声明(例如,. as [first, second])按顺序绑定到数组的元素,索引零的元素开始。当数组模式元素的索引处没有值时,null绑定到该变量

    28.5K30

    一篇文章让你彻底掌握 Shell

    这样写还有一个好处,操作系统的 PATH 变量有可能被配置为指向程序的另一个版本。比如,安装完新版本的 bash ,我们可能将其路径添加到 PATH ,来 “隐藏” 老版本。如果直接用 #!...# 非交互模式 简单来说,你可以 shell 的非交互模式理解为执行 shell 脚本。 在非交互模式下,shell 文件或者管道读取命令执行。...Bash 没有数据类型,bash 变量可以保存一个数字、一个字符、一个字符串等等。同时无需提前声明变量,给变量赋值会直接创建变量。...# 数组删除元素 用 unset 命令来数组删除一个元素: unset nums[0] echo ${nums[@]} # Output: # 1 2 『示例源码』 #!...举个例子,如果我们想把所有的 .bash 文件移动到 script 文件夹它们可执行权限,我们的脚本可以这样写: 『示例源码』 DIR=/home/zp for FILE in ${DIR}/

    2.2K10
    领券