首页 > 解决方案 > bash 脚本,在变量中使用变量

问题描述

为了获得连续数字的结果,创建了一个 bash 脚本,如下所示。然而,结果并没有像预期的那样出来。

#!/bin/bash

test="i am $i"

for i in {1..10}
do
        echo "$test"
done

结果

sh test.sh

i am 
i am 
i am 
i am 
i am 
i am 
i am 
i am 
i am 
i am 

但是我想要的结果是……如下图,我们如何处理变量来得到结果呢?

i am 1
i am 2
i am 3 
i am 4
i am 5
i am 6
i am 7
i am 8
i am 9
i am 10

标签: bashvariables

解决方案


$i在变量外使用

#!/bin/bash

test="i am "

for i in {1..10}
do
  echo $test $i
done

您也可以${i}在变量内部使用

#!/bin/bash

for i in {1..10}
do
  test="i am ${i}"
  echo $test
done

结果是:

i am  1
i am  2
i am  3
i am  4
i am  5
i am  6
i am  7
i am  8
i am  9
i am  10

或者你可以用你想要的任何东西替换 substr 。

例如

#!/bin/bash
test="I am SUBSTR"

for i in {1..10}
do
  echo ${test/SUBSTR/$i}
done

当您有多个变量时,我知道这个解决方案:

#!/bin/bash
test="I am SUBSTR and STR2"

for i in {1..10}
do
  o=${test/SUBSTR/$i}
  echo ${o/STR2/$i*$i}
done

使用sed也可以帮助

#!/bin/bash
test="I am SUBSTR and STR2"

for i in {1..10}
do
  echo $test | sed  -e 's/SUBSTR/'$i'/;s/STR2/'$i++'/'
done

推荐阅读