Bash将两个变量合二为一,将该名称作为变量进行调用

时间:2016-08-31 11:39:42

标签: bash sh

我想要的是每个起始变量都将通过if语句进行检查。唯一的问题是,我不知道如何给予" start1"和" start2" (等)通过startx=start$i

的if语句
#!/bin/sh

start1="08:00:00"
start2="09:00:00"
start2="09:00:00"
i=1

while [ $i -lt 4 ]
    do
       startx=start$i
         if [[ "$timestamp" == "$startx" ]]
            echo "time is common with $startx"
         else
            ""
         fi & i=$[$i+1]
done

我已经使用声明功能进行了检查,不知怎的,我不能让它工作? 非常感谢!

3 个答案:

答案 0 :(得分:1)

您正在寻找间接参数扩展。其他一些说明:

  1. 使用#!/bin/bash,而不是#!/bin/sh;这需要bash
  2. 不要使用$[...];这是一种过时的语法。使用$((...))
  3. #!/bin/bash
    
    start1="08:00:00"
    start2="09:00:00"
    start3="09:00:00"
    i=1
    
    while [ "$i" -lt 4 ]; do
      startx=start$i
      if [[ "$timestamp" == "${!startx}" ]]; then
        echo "time is common with ${!startx}"
      fi
      i=$(($i+1))
    done
    

答案 1 :(得分:-1)

您需要使用an array,而不是以这种方式命名变量。

答案 2 :(得分:-1)

<\ n>“Eval”是解释语言的神奇技巧:

eval startx=\"\$start$i\"