bash - 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
解决方案
$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
推荐阅读
- css - mergeStyles 不能是父级(按类)的子级(按 id)
- ethereum - 反应应用程序内部 JsonRPCProvider 的 Ethers Provider CORS 错误
- java - 从文件读取到链接列表时如何添加空格字符?
- fabric8 - Fabric8 customResourceDefinitions 测试
- xslt - How do I get my XSLT script to drill down 2 documents and compile the data into one HTML file?
- excel - 将工作表 2 中的 B2:B16 行粘贴到工作表 1 上新插入的列上
- r - tidyverse:当问题()什么都不返回时该怎么办
- python - 有没有办法在 python 3 的提示中间获取输入字段?
- authentication - 如果用户在 Next.js 中付费,则解锁部分内容
- python - 通过设置PCA9685的占空比调光时的脉冲