如果这个问题已经得到解答,我很抱歉,但由于我不确定到底是什么问题(在几种可能性中),我的搜索没有成功。
我想要做的是获取每个都写为文本文件中的一行的标签编号,对包含该标签的文件执行操作,并将结果输出到文件中。我所拥有的是:
cat good_PFC.txt | while read line;
do
base_file=${line}_blah.nii.gz
new_fa=${line}_fa_uncmasked.nii.gz
new_tr=${line}_tr_uncmasked.nii.gz
if [ -e $base_file ]; then
echo -n "$line " >> FA_unc_stats.txt
fslstats $new_fa -M | tr '\n' ' ' >> FA_unc_stats.txt
fslstats $new_fa -S | tr '\n' ' ' >> FA_unc_stats.txt
else
echo $line "not a file"
fi;
done
其中 fslstats 是一个输出数字的命令,而 good_PFC.txt 是一个测试文件,其中包含
123
125
132
FA_unc_stats.txt 中的输出是
123 0.221061 0.097268
问题是,终端正确输出“125 不是文件”,但对 132 没有任何作用,我知道它恰好指向一个真实文件。所以我相信我的while循环中的语法有问题,但我不知道是什么!我敢打赌,这很愚蠢,但我就是想不通。谢谢!
ETA:通过在 good_PFC.txt 的末尾添加换行符来修复现在的问题是,每当我到达一个新标签时,我都需要在输出文件中写入一个换行符,但它并没有这样做。我尝试添加
echo /n >> FA_unc_stats.txt
首先,但它在自己的行上打印“/n”......我在换行命令上失败了!