Взять путь родительского каталога из пути файловой системы в bash - PullRequest
0 голосов
/ 29 октября 2019

Мне нужна помощь в скрипте bash:

Допустим, у меня есть файл bash.sh, например:

cat 
$1Viral_sequences_loci/Fasta_viral_loci_seq_* > $1Viral_sequences_loci/All_fasta_viral_loci.fna

, и я запускаю bash bash.sh /path1/path2/path3/

поэтому я бы заменил $1 на /path1/path2/path3/:

cat 
/path1/path2/path3/Viral_sequences_loci/Fasta_viral_loci_seq_* > /path1/path2/path3/Viral_sequences_loci/All_fasta_viral_loci.fna

, но что если я хочу уменьшить только на один порядок в пути, например:

cat 
/path1/path2/path3/Viral_sequences_loci/Fasta_viral_loci_seq_* > /path1/path2/Viral_sequences_loci/All_fasta_viral_loci.fna

, где второй$1 не /path1/path2/path3/, а /path1/path2/

1 Ответ

3 голосов
/ 29 октября 2019

"${1%/*/}/" удаляет шаблон кратчайшего возможного суффикса, соответствующий bash *, включая завершающий / после предыдущего /, а затем повторно добавляет /. С shopt -s extglob можно использовать ?(/) для этого трейлинга /, чтобы сделать его необязательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...