ディレクトリ内のすべての.faファイルでプログラム(アンカー)を実行し、出力を入力ファイルに追加します(元の入力コンテンツの次の行として)。この曖昧なリダイレクトエラーを解決するには
for f in ./*.fa ; do ./anchor $f -d ./; done >> $f
をし、それがエラーを与える:そのために私は試してみました
bash: $f: ambiguous redirect
私はbashは入力ファイルの出力内容を投稿する異議されていますが、私は最近、Windowsのシステムから移行していて理解して私はそれを次のようにしています:
for %F in ("*.fa") do anchor %F -d ./ >> %%F
これは私に望ましい出力を与えます。
これは入力ファイルに出力を追加するのが奇妙に思えるかもしれませんが、どのようにシェルで行うことができますか?
ありがとう
ps出力リダイレクトでも$$を使用しようとしますが、別の名前の別の出力ファイルを作成し、元の入力内容もそのファイルにマージされません。
'f'は' for'文のローカルなので、あなたは何もせずに 'do'セクションに入れます。 – 123
'f'はローカルではありません。ループの後に最後に割り当てられた値が保持されます。 – chepner
違いは、 '$ f'が空の文字列に展開される可能性があるときに、'> $ f'がループが実行される前に処理されることです。 – chepner