需要检查我当前的目录是否在某个子目录中

时间:2016-08-17 21:22:51

标签: bash

我正在编写一个脚本来帮助我组织课程。

我希望能够运行

等命令
class econ -h

转到我的econ类的目录,然后转到homework的子目录(已经在每个类目录中创建)。我有完美的工作,但我想扩展我的程序,只允许:

class -h

来自/ home / USER / School / Semester-Fall / Econ /,我需要做些什么才能检查该路径,并将其与默认值相提并论:/ home / USER / School / Semester -fall /

如果我不够清楚或者您需要更多信息,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

  

"需要检查我当前的目录是否在某个子目录中"

为方便起见,我们定义"某些子目录"作为default

default="/home/USER/School/Semester-Fall/"

现在,要检查当前目录是否在$default定义的目录下,请使用:

[ "${PWD#$default}" != "$PWD" ] && echo "Yes, we are under default"

或:

if [ "${PWD#$default}" != "$PWD" ]
then
    echo "Yes, we are under default"
else
    echo "No, we are not"
fi

在bash下,$PWD是当前的工作目录。

${PWD#$default}前缀删除的示例。如果当前工作目录的值为$default,则会删除$default

如果"${PWD#$default}" != "$PWD"为真,那么我们知道$PWD$default开头,因此当前工作目录位于$default

为了使其可靠运行,$default应以/结尾。

说明前缀删除的示例

$ s=/home/USER/School/Semester-Fall/Econ/
$ echo "${s#/ho}"
me/USER/School/Semester-Fall/Econ/
$ echo "${s#/home/USER/School/Semester-Fall/}"
Econ/
$ echo "${s#/home/OtherUser/School/Semester-Fall/}"
/home/USER/School/Semester-Fall/Econ/