#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 , в частности, разделы расширения параметров и сопоставления с образцом для получения более подробной информации.