我正在尝试编写一个脚本,其中可以使用 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
显然,将“某些内容”和“其他内容”更改为您的脚本需要执行的任何操作。