如何使用Bash在一行中的反引号输出上执行子字符串操作?

时间:2011-01-09 20:11:38

标签: bash

我正在尝试获取父目录的子字符串。令人讨厌的是,当一个人应该满足时,我必须使用两个命令来完成它:

curDir=`pwd`; echo ${curDir##*/};

当我尝试将两者合二为一时,我得到一个错误:

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

我怎样才能避免在这里使用临时工具?

2 个答案:

答案 0 :(得分:3)

echo ${`pwd`##*/}

将导致参数扩展,如

   echo ${/home/yourdir##*/}

但是在你的情况下你不需要命令替换。 Bash提供了一个内置变量:

echo ${PWD##*/}

答案 1 :(得分:1)

在这种情况下,我会这样做:

basename `pwd`

在一般情况下,可能没有basename的等效内容,但您可以使用sed:

pwd | sed 's,.*/,,'