用于提取部分文件名并运行一些命令的运行循环

用于提取部分文件名并运行一些命令的运行循环

我是 bash 脚本新手。我在不同的目录中有一些文件,想要提取文件名或目录名的一部分,并使用该部分创建一个变量,并将该变量应用于其他命令。我的目录和文件名遵循以下模式:

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

我可以知道如何为它们设置一个变量,例如 i 吗? i=001_002_5 i=254_128_3 我编写了以下脚本,但在我的命令中无法识别 i:

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 必须采用“-e”参数来将 \t 视为制表符而不是文字,如果这是您想要的。我知道这与 $i 无关)。

相关内容