作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在一堆文件上运行脚本,这些文件的路径被分配给 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/
我是一名优秀的程序员,十分优秀!