Извините, если на этот вопрос ответили, но, поскольку я не уверен, в чем именно заключается проблема (среди нескольких возможностей), я не добился успеха в своих поисках.
Что я хочу сделатьэто взять номера меток, каждый из которых записан в виде строки в текстовом файле, выполнить действия с файлами, содержащими эту метку, и вывести результаты в файл.Вот что у меня есть:
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" на своей собственной строке ... Я не выполняю команды новой строки!