我试图在此论坛和其他论坛上找到答案。以下是应该在for循环中运行一系列命令的bash脚本。我正在阅读文件的2列。第一列有文件名列表(FARR),第二列有一个参数 - 处理中使用的数字(NARR)。它将运行FARR中每个文件的命令集,并在“do”后面的命令中使用文件名和参数。除了$ {NARR [$ N]}不会将参数添加到该行的末尾外,所有内容都可以正常工作。此阶段的参数为空。 使用echo $ NARR调出完整列表。所以数据在那里... 任何帮助将不胜感激。将变量作为索引传递给bash数组
#!/bin/bash
DIR='gauss_data/'
declare -i N=0
FARR=$(cat $DIR'all.dat' | awk '{if (NR!=1) print $1}')
NARR=$(cat $DIR'all.dat' | awk '{if (NR!=1) print $2}')
for f in $FARR;
do
./gauss_and_noise.py -i $DIR$f -o $DIR$f'.out' -d --save $DIR$f'.out.plot.png' --n0 ${NARR[$N]}
let "N++"
done
你似乎熟悉Python。如果我是你,我会用Python重写这个bash脚本。 – piokuc 2013-02-24 00:21:34
**提示:**在调试[tag:bash]脚本时,在shebang行下面添加'set -x'是非常有帮助的。 – Johnsyweb 2013-02-24 00:23:32
我本来可以在python中做到这一点,但我自己教自己bash脚本,这似乎是一个很好的候选人。 – 2013-02-24 07:57:37