如何使用Bash对一行中的backtick输出执行子字符串操作?

如何使用Bash对一行中的backtick输出执行子字符串操作?,bash,Bash,我正在尝试获取父目录的子字符串。令人恼火的是,当一个命令足够时,我不得不使用两个命令: curDir=`pwd`; echo ${curDir##*/}; 当我尝试将两者合并为一个时,我得到一个错误: echo ${`pwd`##*/} -bash: ${`pwd`##/}: bad substitution 我如何避免在这里使用temp?在这种情况下,我会: basename `pwd` 在一般情况下,basename可能没有等效项,但您可以使用sed: pwd | sed 's,.*/

我正在尝试获取父目录的子字符串。令人恼火的是,当一个命令足够时,我不得不使用两个命令:

curDir=`pwd`; echo ${curDir##*/};
当我尝试将两者合并为一个时,我得到一个错误:

echo ${`pwd`##*/}
-bash: ${`pwd`##/}: bad substitution

我如何避免在这里使用temp?

在这种情况下,我会:

basename `pwd`
在一般情况下,
basename
可能没有等效项,但您可以使用sed:

pwd | sed 's,.*/,,'
将导致参数展开,如

   echo ${/home/yourdir##*/}
但在这种情况下,您不需要命令替换。Bash提供了一个内置变量:

echo ${PWD##*/}

ürgen:如果我们没有内置变量的便利性,你能演示一下该怎么做吗?
echo ${PWD##*/}