这是一个完全新手的问题,但我正在努力,所以我道歉。
我使用bourne shell作为初始化脚本。
我有一个变量A=1 B=“欢迎来到这个世界#$A”
在脚本下面的某个地方,我有一个循环,它将A更新为2,3,4等。如何让B重新评估?目前,B始终保持“欢迎来到世界第一”。
谢谢!
更新#1 -一些代码:
#!/bin/sh
A=1
B="Welcome to #$A"
repeatloop() {
for i in {1..5}
do
A=$i
echo $B
done
}
repeatloop输出:
Welcome to #1
Welcome to #1
Welcome to #1
Welcome to #1
Welcome to #1我试着让#2,#3,#4....
发布于 2011-02-25 10:16:13
每次对A进行赋值时,都需要对B进行赋值
#!/bin/sh
A=1
B="Welcome to #$A"
repeatloop() {
for i in {1..5}
do
A=$i
B="Welcome to #$A"
echo $B
done
}
repeatloop 顺便说一句,#!/bin/sh不是Bash (即使它是指向它的符号链接)。
发布于 2018-10-25 22:27:51
您可以将B参数设置为eval语句。然后在循环中调用它:
#!/bin/sh
A=1
B='eval echo "Welcome to #$A"'
repeatloop() {
for i in {1..5}
do
A=$i
$B
done
}
repeatloop输出:
Welcome to #1
Welcome to #2
Welcome to #3
Welcome to #4
Welcome to #5发布于 2011-02-25 09:38:01
当你输入的时候...
B="Welcome to the world #$A"在为B赋值之前,$A的值会展开,这意味着您在此处键入的内容等同于...
B="Welcome to the world #1"所以“重新计算”是没有意义的,因为B实际上并没有变量。
如果您希望在实际引用某些内容之前不展开变量,请改用函数:
function B() {
echo "Welcome to the world $1"
}
A=1
welcomeone=$(B $A)
A=2
welcometwo=$(B $A)https://stackoverflow.com/questions/5112663
复制相似问题