Как я могу использовать базовое имя с параллельным?

Кажется, вы хотите предоставить пользователю информационные сообщения на разных языках. Вам, вероятно, следует использовать программное обеспечение, специально разработанное для этой цели, если вы хотите сделать это правильно. В мире GNU есть gettext, которые могут вам пригодиться. (Это не тривиальная задача!)

В приведенном ниже тексте рассматривается вопрос до его обновления.и часть обновленного вопроса (, прежде чем я заметил, что речь идет о предоставлении переведенных сообщений):


Ваш пример не имеет особого смысла, так как ваша функция — это просто псевдоним для echo. Вы можете легко вызвать свою функцию happyкак

happy "I am $adjective happy"   # $adjective would be the string "very"

Кроме того, похоже, что стандартная функция printfтакже может быть полезно узнать о:

adjective='very'
printf 'I am %s happy\n' "$adjective"

printfпринимают один или несколько аргументов, где первый — это статическая строка, описывающая выходной формат, возможно, содержащая заполнители, а на остальные аргументы ссылаются заполнители.


Если сообщения являются строками статического формата, просто используйтеprintf:

apt_get_install ()
{
    printf 'Installing %s...\n' "$1"
    printf '%s installation started at %s\n' "$1" "$(date)"
    apt-get -y install "$1"
    printf '%s installation ended at %s\n' "$1" "$(date)"
}

apt_get_install thing

Связанные:

3
10.06.2021, 12:52
1 ответ

Ваша команда basenameудаляет только фиксированное расширение .fasta-, насколько мне известно, она не может удалить переменный шаблон.

Однако GNU parallelпредоставляет средство замены строки выражения Perl , которое гораздо более мощное, чемbasename-ex. дано

$ ls *_chrm.part*.fasta
ERR358546_chrm.part-2.fasta  ERR358546_chrm.part-5.fasta  ERR358546_chrm.part-8.fasta
ERR358546_chrm.part-3.fasta  ERR358546_chrm.part-6.fasta  ERR358546_chrm.part-9.fasta
ERR358546_chrm.part-4.fasta  ERR358546_chrm.part-7.fasta

, затем

$ parallel echo Result'{= s:_.*$:: =}' ::: *_chrm.part*.fasta
ResultERR358546
ResultERR358546
ResultERR358546
ResultERR358546
ResultERR358546
ResultERR358546
ResultERR358546
ResultERR358546

, где подстановка s:_.*$::заменяет все после символа подчеркивания ничем. Трансплантация в исходную команду:

time parallel ' 
  singularity exec -B "$PWD" /usr/local/CRISPRCasFinder-release-4.2.20/CrisprCasFinder.simg \
  perl /usr/local/CRISPRCasFinder/CRISPRCasFinder.pl \
  -so /usr/local/CRISPRCasFinder/sel392v2.so \
  -cf /usr/local/CRISPRCasFinder/CasFinder-2.0.3 \
  -drpt /usr/local/CRISPRCasFinder/supplementary_files/repeatDirection.tsv \
  -rpts /usr/local/CRISPRCasFinder/supplementary_files/Repeat_List.csv \
  -cas -def G --meta \
  -out /databis/defontis/Dossier_fasta_chrm_avec_CRISPRCasFinder/Test/Result'{= s:_.*$:: =}' \
  -in /databis/defontis/Dossier_fasta_chrm_avec_CRISPRCasFinder/Test/{}
' ::: *_chrm.part*.fasta

Если вы хотите захватить и включить индекс детали, вы можете изменить выражение на

Result'{= s:_chrm\.part-(\d+)\.fasta$:_$1: =}'

или

'{= s:_chrm\.part-(\d+)\.fasta$:Result_$1: =}'

например.

6
28.07.2021, 11:25

Теги

Похожие вопросы