gpt4 book ai didi

bash - 遍历 bash 脚本中的变量名

转载 作者:行者123 更新时间:2023-11-29 09:09:10 24 4
gpt4 key购买 nike

我需要在一堆文件上运行脚本,这些文件的路径被分配给 train1, train2, ... , train20 ,然后我想‘为什么不用 bash 脚本让它自动运行呢?’。

所以我做了类似的事情:

train1=path/to/first/file
train2=path/to/second/file
...
train20=path/to/third/file

for i in {1..20}
do
python something.py train$i
done

这不起作用,因为 train$i 呼应了 train1 的名称,而不是它的值。

所以我尝试了诸如 $(train$i)${train$i}${!train$i}。有谁知道如何捕捉这些变量的正确值?

最佳答案

使用数组。

Bash 确实有变量间接寻址,所以你可以说

for varname in train{1..20}
do
python something.py "${!varname}"
done

!引入了间接寻址,所以“获取由varname的值命名的变量的值”

但是使用数组。您可以使定义非常可读:

trains=(
path/to/first/file
path/to/second/file
...
path/to/third/file
)

请注意,此数组的第一个索引位于位置零,因此:

for ((i=0; i<${#trains[@]}; i++)); do
echo "train $i is ${trains[$i]}"
done

for idx in "${!trains[@]}"; do
echo "train $idx is ${trains[$idx]}"
done

关于bash - 遍历 bash 脚本中的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319100/

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