我需要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/
答案 0 :(得分:3)
"${1%/*/}/"
删除由bash的*
匹配的最短后缀模式,包括前一个/
之后的结尾/
,然后重新添加/
。借助shopt -s extglob
,?(/)
可以用于尾随/
使其为可选。