我写下以下脚本
#!/bin/bash
str1="apple"
str2="banana"
str3="NA"
str4="lumia"
str5="nokia"
let maxarg=5
checkindex()
{
while [ $maxarg -gt 0 ]
do
str="${str$maxarg}" //here is problem
echo -e $str
if [ "${str}" == "NA" ]
then
break
fi
((maxarg--))
done
printf "Index is %d\n" $maxarg
}
checkindex
在进行exicuting时我得到str1,str2....Index is 0
输出但是我想要打印apple,banana....Index is 3
意味着捕获找到NA
字符串的索引。使用str="${str$maxarg}"
我尝试重定向str1,str2....str5
中str
的输出,因为我不会使用任何switch case
或if..else
来比较每个字符串。
有什么帮助吗?
答案 0 :(得分:2)
您需要参考indirect expansion。替换行
str="${str$maxarg}" //here is problem
与
tmp="str${maxarg}" # This sets the variable tmp to str1 and so on
str=${!tmp} # This performs indirect expansion to retrieve
# the value of the variable name stored in tmp
应该让它发挥作用。