如何使用用户输入和现有变量

如何使用用户输入和现有变量

我正在尝试编写一个脚本,其中可以使用 for 循环配置列表选择:

list1="name1 name2"
list2="name3 name4"

echo "which list do you want to use? (list1 or list2)"
read userInput

for item in $userInput
do ....

这不起作用。我也尝试了下面的方法,但也没有成功。

for item in $($userInput)

答案1

使用间接参数扩展:

for item in ${!userInput} ; do
    ...
done

但是,您应该在运行循环之前验证 $userInput。

答案2

它确实有效,只是不要使用循环for item in。它适用于数组。您读入 $userInput 的内容是一个字符串。尝试以下操作:

#!/bin/bash 

list1="name1 name2"
list2="name3 name4"

echo "which list do you want to use? (list1 or list2)"
read userInput

if [ $userInput == "list2" ] ;
then
    something
else
    something else
fi

显然,将“某些内容”和“其他内容”更改为您的脚本需要执行的任何操作。

相关内容