gpt4 book ai didi

linux - 如何在 bash 中动态创建变量?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:05 24 4
gpt4 key购买 nike

我有 3 个字符串:

p001="57 59 13 30 96 45 24 71 33 15 40"
p002="57 7 13 11 80 44 47 50 84 86 64"
p003="57 7 13 11 50 44 42 50 84 86 64"

并且基于 mcount (001,002 或 003),我希望替换 ptemp。但我不知道如何“动态”创建一个新变量......

for mcount in {1..3}; do
pad_m=`printf "%03d" $mcount`
sed "s|PTEMP|p{pad_m}|; s|MTEMP|'${pad_m}'| " ./template.sh > .model.sh

这会导致错误。

我该怎么做?

template.sh 摘录

```
mnum=MTEMP

for pvar in PTEMP; do #Cycles through parameter files
pad_p=`printf "%03d" $pvar`

for svar in sq1 sq99; do
state_file=${mnum}/${svar}
./model.exe ${state_file}

done
done
```

最佳答案

虽然我还没有完全理解你想做什么,但我的假设如下:

  • 循环遍历 p001p002p003 的元素,其编号由 mcount 索引,范围为 {1..3}。
  • 根据生成的循环变量执行./model.exe

然后您可以说如下内容而无需生成.model.sh脚本。

#!/bin/bash

p001="57 59 13 30 96 45 24 71 33 15 40"
p002="57 7 13 11 80 44 47 50 84 86 64"
p003="57 7 13 11 50 44 42 50 84 86 64"

for mcount in {1..3}; do
pad_m=$(printf "%03d" $mcount)
mnum=$pad_m

varname="p$pad_m" # will hold "p001", "p002" or "p003"
p=${!varname} # indirect variable referencing
for pvar in $p; do
pad_p=$(printf "%03d" "$pvar")
# echo "$pad_p" # for debugging
for svar in sq1 sq99; do
state_file="${mnum}/${svar}"
./model.exe "$state_file"
# echo "$state_file" # for debugging
done
done
done

如果我的假设不正确,请告诉我。
BR。

关于linux - 如何在 bash 中动态创建变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53534779/

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