ループを実行して部分ファイル名を抽出し、いくつかのコマンドを実行します。

ループを実行して部分ファイル名を抽出し、いくつかのコマンドを実行します。

私は初めてbashスクリプトに触れました。別のディレクトリにいくつかのファイルがあり、ファイル名またはディレクトリ名の一部を抽出し、その部分で変数を作成し、その変数を別のコマンドに適用しようとします。私のディレクトリとファイル名は次のパターンに従います。

user/Sample_001_002_5/001_002_5_fgdfgh_hgf00.gz
user/Sample_254_128_3/254_128_3_wserer_hgf00.gz

変数の設定方法がわかりますか? i=001_002_5 i=254_128_3 次のスクリプトを作成しましたが、コマンドで認識されません。

dir=/users/Sample_*

for DIR in $dir

do i= basename ${DIR} | cut -c 8-

R="${DIR}/${i}*.gz"   # Run correctly#

echo $i               # run correctly#

echo $R               # run  correctly#

echo '@RG\tID:MCW\tSM:'${i}'\tPL:Illumina\tPU:'${i}"   ### in this command i is not recognized######

done

答え1

これが問題の原因であるかどうかはわかりませんが、問題の行末の二重引用符が一致しません。

(また、echoは、必要に応じて\ tをリテラルではなくタブとして扱うために「-e」引数を取る必要があります。私はこれが$ iとは関係がないことを知っています。)

関連情報