gpt4 book ai didi

linux - Bourne shell 构建字符串并将其用作参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:08 29 4
gpt4 key购买 nike

我正在使用 bourne shell 并想执行以下操作:

COUNTER=0
CIRCLEPART1="|"
CIRCLEPART2="/"
CIRCLEPART3="--"
CIRCLEPART4='\'

while [ $COUNTER -lt 3 ]; do
ACT_CIRCLEPART=CIRCLEPART$COUNTER
echo "Hello `eval \${ACT_CIRCLEPART}`"
COUNTER=`expr $COUNTER + 1`
done

我想在每个循环中处理其中一个 CIRCLE 名称。我在 stackoverflow 上找到了一个代码片段,但它也不起作用,因为我的输出是“Hello, 8537{myConstructedVar}。”:

FOOCOUNT=4
FOO_0=John
FOO_1=Barry
FOO_2=Lenny
FOO_3=Samuel
count=$FOOCOUNT
counter=0
while [ $counter -lt $count ]
do
myConstructedVar=FOO_$counter
counter=`expr $counter + 1`
echo "Greeting #$counter: Hello, `eval echo \$${myConstructedVar}`."
done

感谢您的帮助。问候。

最佳答案

我没有普通的 sh 来测试它(我试过 bash --posix),但这可能会完成工作:

COUNTER=0
CIRCLEPART1="|"
CIRCLEPART2="/"
CIRCLEPART3="--"
CIRCLEPART4='\'
while [ $COUNTER -lt 3 ]; do
ACT_CIRCLEPART=CIRCLEPART$COUNTER
eval echo "Hello \$$ACT_CIRCLEPART"
COUNTER=`expr $COUNTER + 1`
done

输出是:

Hello 
Hello |
Hello /

这也适用于 bash

输出的第一行引用了未定义的CIRCLEPART0。对此进行更正并遍历所有定义的变量:

COUNTER=1
CIRCLEPART1="|"
CIRCLEPART2="/"
CIRCLEPART3="--"
CIRCLEPART4='\'
while [ $COUNTER -lt 5 ]; do
ACT_CIRCLEPART=CIRCLEPART$COUNTER
eval echo "Hello \$$ACT_CIRCLEPART"
COUNTER=`expr $COUNTER + 1`
done

输出是:

Hello |
Hello /
Hello --
Hello \

关于linux - Bourne shell 构建字符串并将其用作参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326228/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com