将带有多个参数的 shell 命令的输出存储到一个数组中
Store output of shell command with multiple arguments into an array
我正在尝试使用 shell 将我的 Terraform 工作区的状态存储在一个数组中。
我正在尝试这种通常对我有用的方法:
declare -a workspace_list=( $(terraform workspace list))
for a in $(seq 0 ${#workspace_list[*]})
do
if [[ -z ${workspace_list[$a]} ]]
then
break
fi
echo $(($a+1))": "${workspace_list[$a]}
a=$(($a+1))
done
但是,它为我提供了一个输出,其中包含目录中的所有文件以及工作区。
我猜这与 terraform 命令的多个参数有关。请帮忙。
terraform workspace list
的输出供参考
当您使用 terraform 命令的结果初始化数组时,它看起来像:
declare -a workspace_list=( * default dev-singapore)
这里,*
是glob-expanded列出当前目录下的所有文件。
您可以去掉星号,只处理 terraform 的输出。
declare -a workspace_list=($(terraform workspace list | sed 's/*//'))
不幸的是,与 terraform plan
不同,terraform workspace
没有 JSON 输出选项,后者会更干净。
我正在尝试使用 shell 将我的 Terraform 工作区的状态存储在一个数组中。
我正在尝试这种通常对我有用的方法:
declare -a workspace_list=( $(terraform workspace list))
for a in $(seq 0 ${#workspace_list[*]})
do
if [[ -z ${workspace_list[$a]} ]]
then
break
fi
echo $(($a+1))": "${workspace_list[$a]}
a=$(($a+1))
done
但是,它为我提供了一个输出,其中包含目录中的所有文件以及工作区。
我猜这与 terraform 命令的多个参数有关。请帮忙。
terraform workspace list
的输出供参考
当您使用 terraform 命令的结果初始化数组时,它看起来像:
declare -a workspace_list=( * default dev-singapore)
这里,*
是glob-expanded列出当前目录下的所有文件。
您可以去掉星号,只处理 terraform 的输出。
declare -a workspace_list=($(terraform workspace list | sed 's/*//'))
不幸的是,与 terraform plan
不同,terraform workspace
没有 JSON 输出选项,后者会更干净。