如何连接字符串并在linux bash脚本中显示格式化字符串?

时间:2014-01-29 10:08:44

标签: linux string bash

我写下以下脚本

#!/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....str5str的输出,因为我不会使用任何switch caseif..else来比较每个字符串。 有什么帮助吗?

1 个答案:

答案 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

应该让它发挥作用。