【发布时间】:2015-05-12 14:06:10
【问题描述】:
我有三个可以工作的命令,我想创建一个循环来执行所有文件,而不是必须按名称单独为所有文件键入它们。我不明白为什么它不能作为循环工作。
我想要它做的,是把“索引”这个词放在左上角,然后 之后的每一行,从 1 到我的 .gcount 文件中的行数的数字; 然后将上面的内容粘贴到它的右侧,将我的每个 .gcount 文件的内容粘贴到名为“index_foo.gcount”的新文件中
根据错误消息(目录不存在),问题似乎是大括号使用不正确?
for files in ./*.gcount
do
echo "Index" > index
seq 1 1 $(cat $files | wc -l) >> index
paste -d "\t" index $files > index_${files}
done
【问题讨论】:
-
那是因为
index_$files将扩展为index_./stuff.gcount并且由于目录index_.不存在,Bash 抱怨。解决此问题的两种可能性:1) 使用for files in *.gcount,这样files中就没有任何斜线。 2) 只保留文件中的基本名称,紧跟在do关键字之后:files=${files#./}。这将摆脱领先的./。
标签: bash