当前位置: 首页 > 面试题库 >

bash:设置数组env变量并从任何shell脚本中取消引用它都会失败

况鸿雪
2023-03-14
问题内容

我以这种方式将数组设置为环境变量。脚本test.sh

在test.sh中

#!/bin/bash
export STRING=( "str1" "str2" )

源test.sh

现在在脚本中 test-1.sh

#!/bin/bash
echo ${STRING[0]}

响应什么都没有,只是一个空白行,但是,如果我尝试STRING="str1"在test.sh中进行设置并echo $STRING在中进行test-1.sh,则可以正常工作。

测试仅从root用户执行,现在如何将array设置为env变量,以便我可以根据需要调用array的元素?早些时候,我什至尝试进行修改/etc/bashrc,但这也没有带来任何积极的结果。

我需要将数组设置为env变量,因为可能必须编写许多脚本才能使用这些变量设置。

有人可以向我提供建议以纠正我做错的地方吗?


问题答案:

阅读精美的手册“错误”部分。

数组变量可能尚未导出。

虽然,我不知道很多人认为这是一个实际的错误。其他支持ksh样式的shell也不允许导出它们。

您可以很容易地通过参数,变量或环境来传递数组定义。通常它不是很有用。

function f {
    unset -v "$2"
    typeset "$2"
    eval "${!1}"
    typeset -p "$2"
}

typeset -a a=(a b c)
myArr=$(typeset -p a) f myArr a


 类似资料:
  • 我试图设置一个ENV等于Python脚本输出在我的dockerfile。由于分层,我无法找到将它们放在同一层的方法。我也无法找到一种方法将变量直接设置为等于脚本,我似乎无法找到如何在同一行中运行脚本。 python是一个简单的打印,称为test.py: 到目前为止,我已经在dockerfile中尝试了以下几个版本,以将ENV设置为脚本: 是否可以一步将ENV testvar设置为脚本的值,或者确保

  • 问题内容: 我正在尝试为变量分配数组长度。 它说找不到len命令。为什么? 问题答案: 变量名和赋值运算符之间不能有空格。如果这样做,会将变量名称视为命令。 尝试:

  • 测验sh包含: 我设置测试。sh至chmod 777 我用两个参数开始脚本: 然后我通过键入以下内容进行测试: 结果: 我做错了什么?

  • 问题内容: Jenkins脚本化的管道。两个问题: 我有一个全局变量var,我正尝试在shell内访问其值。但它什么也没打印 var的值是使用shell脚本在其中一个阶段中设置的,以便在下一个阶段中进行访问,但它在shell中不打印任何内容。 我想念什么?(请参见下面的脚本) 问题答案: 您的示例不起作用,因为您使用的是带单引号的字符串文字。从Groovy手册(重点是我的): 任何Groovy的表

  • 我们有一个问题,我可以用这个简单的例子重现。我有以下示例shell脚本文件,名为SO shell。txt 当我运行时,我得到以下输出: 脚本执行完毕后,如果我在shell命令行执行以下命令: 我看不到任何东西(即shell变量没有被分配到shell脚本的生命周期之外) Q) 如何使shell变量超过其定义shell脚本的寿命?

  • 本文向大家介绍处理Shell脚本中带有空格的变量(bash脚本),包括了处理Shell脚本中带有空格的变量(bash脚本)的使用技巧和注意事项,需要的朋友参考一下 本篇主要介绍bash脚本中对于含空格文件处理方式。 在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不能被处理; 通过set -x将执行信息打印出来,发现可以执行到,但是执行过程提示找不到对应的文件名,mv对应的source文