我写了一个bash脚本,假设创建一些文件并写入它们。 无论如何它并不重要的脚本是什么,事情是 - 在代码中有一个评论(最后),它只是打印一些东西来屏幕。如果我试图像这样运行它 - 程序不会将输出写入文件,但是如果不将这行写入注释(即移除'##'),那么它就起作用 - 程序会将输出写入文件。 我真的尝试过,但我不明白发生了什么事... 如果你需要脚本的其余部分,或者更多的解释,它只是说什么。bash脚本的奇怪行为
files=(`ls $artists`)
echo artists=%${files[*]}%
for file in ${files[*]}; do
echo file= $file:
lines=`wc -l $artists/$file | cut -d" " -f1`
echo lines=$lines
counter=0
while read -a line; do
if (($counter==$lines));then
break;
fi
if [[ ! $line =~ [^[:space:]] ]] ; then
continue
fi
rank=$((${line[3]}+$((5*${line[4]}))))
echo ${line[*]}
echo rank = $rank
echo "${line[*]} $rank" >> $artists/$file
let counter++
done < $artists/$file
##cat $artists/$file | tail -$lines
cat $artists/$file | tail -$lines > $artists/$file
done
[为什么你不应该解析ls(1)的输出](http://mywiki.wooledge.org/ParsingLs) –
描述脚本的目标是什么会很有帮助。 – chepner