我想在 bash 中尝试这种方法,似乎没有直接的方法可以做到这一点。我搞砸的例子:
Var1=foo
Var2=bar
Var3=
Var3 在我的测试中故意未定义。
在这些变量之后,我理想地使用这样的东西:
declare -a array=(Var1 Var2 Var3)
for array_element in ${array[@]};
do
if [[ $array_element ]];
then
echo "Element $array_element has content - true";
echo "The value of $array_element is foo."
echo
else
echo "Element $array_element has no content - false";
echo
fi
done
我想要看看我是否能做到的最终结果是,如果你有 3 个或 30 个可能的变量,它会告诉你一个数组元素是否有内容,然后输出那个特定的变量内容。在这种情况下,“foo”和“bar”。
- 定义一个变量
- 定义一个仅包含变量名称的数组
- 检查定义的数组是否有内容(不是是否设置——只是它是否为空白)
- 然后输出数组元素的实际原始定义值。
动态数组,有点?一组基本的
if [[ $Var1 ]]
if [[ $Var2 ]]
if [[ $Var3 ]]
工作正常,但如果我可以减少重复的代码,我想把它包装成这样的东西。长期目标是读取变量,在单独的配置文件中吐出定义为变量的任何内容,然后针对该动态内容触发其他地方定义的各种函数。所以,如果这可以工作,我在上面有:
echo "The value of $array_element is foo."
本质上,将被一堆使用 foo 作为 $1 的各种函数()所取代。但这部分让我很纠结。我上面的测试(不出所料)在所有 True 命中时都按预期失败,因为它只是确认 $array_element 确实是从 $array 的读取中设置的。我被困在如何获取在 $array_element 下定义的内容。如果你在文件的任何地方扔一个“echo $Var1”,它也会输出预期的“foo”,不管它在哪里。
你能在 bash 中做到这一点吗?我认为我以前没有见过以这种方式使用的变量,我不确定我是否遇到了一些机械问题/bash 限制或查看它的逻辑问题。一段时间以来,我一直在搞砸它和几种方法,但都没有运气,而且 Google 和 Stack Overflow 的搜索已经枯竭。谢谢你的帮助。