我是 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 无关)。