Arrays 在bash中将bash字符串计算为数组

Arrays 在bash中将bash字符串计算为数组,arrays,bash,shell,split,Arrays,Bash,Shell,Split,我正在使用VS代码任务运行一个脚本,该脚本在当前打开的文件上运行jest测试。它会提示我输入一个测试模式,如果输入了什么,则将该值作为环境变量传入。我想将该变量拆分为一个数组,该数组将作为参数传入我的jest调用。因为测试名称几乎总是包含空格(或任何其他字符),所以我希望能够传递多个带引号的模式 输入 生成的环境变量 args='“测试1”“测试2”“测试3” testFile=“path/to/current opened/file” 要在脚本中运行的所需命令: npm运行测试--“路径/到

我正在使用VS代码任务运行一个脚本,该脚本在当前打开的文件上运行jest测试。它会提示我输入一个测试模式,如果输入了什么,则将该值作为环境变量传入。我想将该变量拆分为一个数组,该数组将作为参数传入我的
jest
调用。因为测试名称几乎总是包含空格(或任何其他字符),所以我希望能够传递多个带引号的模式

输入

生成的环境变量

args='“测试1”“测试2”“测试3”
testFile=“path/to/current opened/file”
要在脚本中运行的所需命令:

npm运行测试--“路径/到/当前打开/文件”-t“测试1”-t“测试2”-t“测试3”
我已经知道了除了将
$args
作为一个数组进行求值之外,其他所有操作都是如何进行的。下面是我必须测试的各种解析尝试

#/bin/bash
回显“$args”
回声
scriptArgs=($args)
echo${#scriptArgs}
echo${#scriptArgs[@]}
回声
scriptArgs=(“${args[@]}”)
echo${#scriptArgs}
echo${#scriptArgs[@]}
回声
scriptArgs=(“$args”)
echo${#scriptArgs}
echo${#scriptArgs[@]}
回声
scriptArgs=($(echo$args))
echo${#scriptArgs}
echo${#scriptArgs[@]}
回声
scriptArgs=(“$(echo$args)”)
echo${#scriptArgs}
echo${#scriptArgs[@]}
回声
#印刷品:
#
#“测试1”“测试2”“测试3”
#  
#  5
#  6
#  
#  26
#  1
#  
#  26
#  1
#  
#  5
#  6
#  
#  26
#  1

所需的值为3。

您需要使用
eval
来处理报价

eval "scriptArgs=($args)"

您需要使用
eval
来处理报价

eval "scriptArgs=($args)"

那很容易。了解
eval
关键字的存在是很好的。这很容易。了解
eval
关键字的存在是很好的。如果您可以轻松地将
args
这样的字符串转换为数组,那么首先就不需要数组了。@dx\u over\u dt:为什么不简单地将
args
定义为数组呢
args=('test1''test2''test3')
?@user1934428我没有这个选项。VS Code确保环境是单个转义值。如果可以轻松地将字符串(如args)转换为数组,那么首先就不需要数组了。@dx\u over\u dt:为什么不简单地将args定义为数组
args=('test1''test2''test3')
?@user1934428我没有这个选项。VS代码确保环境是单个转义值。