Перебор части непоследовательных каталогов в Bash

#linux #bash #loops #xargs

#linux #баш #петли #xargs

Вопрос:

Входной текстовый файл: SAMN02354977
SAMN02355030
SAMN08154141

код:

 #!/bin/bash
while IFS= read -r line; do
    echo "${line}.merged.markdup.recal.g.vcf.gz"
done < "$1"
 

команда:

 ./idk.sh FramminghamSamples.txt > testing.txt
 

как я могу остановить его возвращение:

 SAMN02354977
.merged.markdup.recal.g.vcf.gz  
SAMN02355030
.merged.markdup.recal.g.vcf.gz  
SAMN08154141
.merged.markdup.recal.g.vcf.gz
 

Это потому, что я хочу запустить команду для каждой из «$line».merged.markdup.recal.g.vcf.gz файлы, которые находятся в каждом из каталогов $line.

#L2CodeNoob

(Я тоже пробовал:

  #!/bin/bash
while read -r line; do
    echo "${line}.merged.markdup.recal.g.vcf.gz"
done < "$1"
 

)

Комментарии:

1. Хорошо, я нашел где добавить: /[$’ t r n ‘], чтобы это было: echo «${line//[$’ t r n ‘]} .merged.markdup.recal.g.vcf.gz » но что значит /[$’trn ‘] означает?

2. //[$'CHARS'] это специальный синтаксис bash для замены всех символов в списке CHARS ничем. Согласно странице руководства для bash, описывающей замену шаблона, синтаксис такой ${parameter/pattern/string} , но «Если строка равна нулю, совпадения с шаблоном удаляются, а шаблон / following может быть опущен». Вы можете проверить linux.die.net/man/1/bash , в частности, разделы расширения параметров и сопоставления с образцом для получения более подробной информации.