Кажется, вы хотите предоставить пользователю информационные сообщения на разных языках. Вам, вероятно, следует использовать программное обеспечение, специально разработанное для этой цели, если вы хотите сделать это правильно. В мире 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
Связанные:
Ваша команда 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: =}'
например.