これが回答されている場合は申し訳ありませんが、(いくつかの可能性の中で)正確に何が問題なのか確信が持てないため、検索に成功していません.
私がやりたいのは、テキスト ファイルに 1 行ずつ書かれているラベル番号を取得し、そのラベルを含むファイルで処理を行い、結果をファイルに出力することです。私が持っているのはこれです:
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 not a file」を正しく出力しますが、実際のファイルを指していることがわかっている132では何もしません。そのため、while ループの構文に何か問題があると思いますが、何が原因かわかりません! それはばかげているに違いないのですが、私にはそれがわかりません。ありがとう!
ETA: good_PFC.txt の末尾に改行を追加することで修正されました。問題は、新しいラベルに到達するたびに出力ファイルに改行を書き込む必要があることですが、それが行われません。追加してみました
echo /n >> FA_unc_stats.txt
最初に、「/n」を独自の行に出力します...改行コマンドで失敗します!