Я сталкиваюсь со странным поведением при bash подстановке строк.
Я ожидал, что такая же замена на $ r1 и $ var даст точно такие же результаты. Кажется, обе строки имеют одинаковое значение.
Но дело не в этом, и я не могу понять, чего мне не хватает ....
Может быть, это из-за глобуса? Я просто не знаю ... Я не чистый айтишник, и, возможно, это будет для вас очевидным.
(внизу ссылки Repl.it)
mkdir -p T21805
touch T21805/T21805_SI-GA-D8-BH25N7DSXY_S1_L001_R1_001.fastq.gz
r1=T21805/*R1*
echo $r1;
echo ${r1%%_S1*z}
var=T21805/T21805_SI-GA-D8-BH25N7DSXY_S1_L001_R1_001.fastq.gz
echo ${var%%_S1*z}
echo $r1| hexdump -C
echo $var | hexdump -C
вывод :
эхо $ r1
T21805 / T21805_SI-GA-D8-BH25N7DSXY_S1_L001_R1_001.fastq.gz
эхо $ {r1 %% _ S1 * z }
T21805 / T21805_SI-GA-D8-BH25N7DSXY_S1_L001_R1_001.fastq.gz
echo $ {var %% _ S1 * z}
T21805 / T21805_SI-GA-D8-BH25N7DSXY
echo $ r1 | hexdump - C
00000000 54 32 31 38 30 35 2f 54 32 31 38 30 35 5f 53 49 | T21805 / T21805_SI |
00000010 2d 47 41 2d 44 38 2d 42 48 32 35 4e 37 44 53 58 | -GA-D8-BH25N7DSX |
00000020 59 5f 53 31 5f 4 c 30 30 31 5f 52 31 5f 30 30 31 | Y_S1_L001_R1_001 |
00000030 2e 66 61 73 74 71 2e 67 7a 0a
| .fastq.gz. | 0000003a
echo $ var | hexdump - C
00000000 54 32 31 38 30 35 2f 54 32 31 38 30 35 5f 53 49 | T21805 / T21805_SI |
00000010 2d 47 41 2d 44 38 2d 42 48 32 35 4e 37 44 53 58 | -GA-D8-BH25N7DSX |
00000020 59 5f 53 31 5f 4 c 30 30 31 5f 52 31 5f 30 30 31 | Y_S1_L001_R1_001 |
00000030 2e 66 61 73 74 71 2e 67 7a 0a
| .fastq.gz. | 0000003a
Repl.it
Мне интересно понять, почему это не работает, я могу добиться желаемого результата, используя, например, sed.