我不确定我是否正确说明了这一点。
以下是我在bash脚本中的内容
ATEXT="this is a number ${i} inside a text string"
然后我希望在以下${i}
循环中解析for
。
for i in {1..3}; do
echo "${ATEXT}"
done
当然上述方法不起作用,因为在读取变量i
时会解析ATEXT
。
然而,我不知道如何实现我想要的。这是得到输出:
this is a number 1 inside a text string
this is a number 2 inside a text string
this is a number 3 inside a text string
答案 0 :(得分:7)
对于参数化文字,请使用printf
,而不是echo
:
ATEXT="this is a number %d inside a text string"
for i in {1..3}; do
printf "$ATEXT\n" "$i"
done
另见:
答案 1 :(得分:5)
可能我更喜欢@Chepner的答案 - 但作为一个不错的选择,你也可以做以下事情:
$ cat script
#!/usr/bin/env bash
_aText()
{
printf "this is a number %d inside a text string\n" $1
}
for i in {1..3}; do
_aText $i
done
$ ./script
this is a number 1 inside a text string
this is a number 2 inside a text string
this is a number 3 inside a text string