前文:それで、私はたくさんのファイルに対して変換ツールを実行する必要があるプロジェクトを持っています。変換には複数の手順があり、時間がかかる場合があります。これらのファイルは必ずしも同じディレクトリにあるとは限らないため、変換するファイル名を使用してテキストファイルを作成しました。
<filenames.txt>
/home/me/Documents/file1.txt
/home/me/Documents/file2.txt
/home/me/Documents/file3.txt
問題:次に、これらのファイルに対して実行するbashスクリプトがあり、変換手順を実行します。ただし、フェーズとファイル名をエコーしようとします。この場合、echoは、エコーされたテキストをファイル名の中央に貼り付けます。
<script.sh>
cat filenames.txt | while read some_file
do
echo
echo "Begin FORMAT_A to FORMAT_B conversion..."
echo "FORMAT_A Filename:"
echo $some_file
formatb_dir= dirname $some_file | tr '\n' "/"
formatb_file= basename $some_file ".xml" | tr '\n' "_"
formatb=$formatb_dir$formatb_file"form_b.xml\n"
echo "FORMAT_B Filename:"
echo $formatb
done
次のような出力を生成します。
Begin FORMAT_A to FORMAT_B conversion...
FORMAT_A Filename:
/home/me/Documents/file1.txt
/home/me/Documents/file1.txt_FORMAT_B Filename:
form_b.xml
Begin FORMAT_A to FORMAT_B conversion...
FORMAT_A Filename:
/home/me/Documents/file2.txt
/home/me/Documents/file2.txt_FORMAT_B Filename:
form_b.xml
Begin FORMAT_A to FORMAT_B conversion...
FORMAT_A Filename:
/home/me/Documents/file3.txt
/home/me/Documents/file3.txt_FORMAT_B Filename:
form_b.xml
エコーされたテキストである「FORMAT_BFilename」は、追加されたテキスト「form_b.xml」の前に表示されています。
dirname、basename、echo、trのマニュアルページを調べましたが、表示されているものを引き起こすと思われるものは見つかりませんでした。Googleで調べてみましたが、正しい質問をしているのかわかりません(「変数の前にbashエコーテキスト」?)。
質問:エコーがエコーされたテキストを変数の中央に配置するのはなぜですか?
(関連する可能性のある質問:「私は自分がしていることを完全に間違った方法で行っているのですか?」)
編集:変数について理解していないことやコマンドからの出力を取得する方法を説明してくれたので、forteaの回答を受け入れました。そうは言っても、dogbaneとJonathan Lefflerは、私がやっていることを行うためのより良い方法を示しました。