如何使用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##*/}