我正在編寫一個腳本,用於檢查相對於腳本工作目錄的文件夾是否位於shell的路徑中。從路徑中刪除底層
例如,如果項目結構是:
top/
bin/
tests/
test1/
foo.sh
test2/
foo.sh
我要檢查,如果top/bin
是PATH
無論從foo.sh
。我知道下面的工作:
cd ../../bin
if echo $PATH|grep `pwd`; then
echo "Success"
else
echo "Failure"
fi
但我必須跟蹤哪個目錄的,我開始在這樣我就可以cd
回到那裏。我可以在pwd
之後切斷最後兩個目錄,然後再附加bin
到那個嗎?有沒有其他智能的方法來處理這個問題? 作爲獎勵,我想讓這個腳本在tests
內的其他目錄級別強健,但如果它使事情複雜化,這並不是必須的。根據需要
你可以使用子串操作和通配符做 – technosaurus
一個方便的技術來避免以往任何時候都需要到CD回是簡單地在子shell中運行。例如,將命令封裝在parens中:'(cd ../../bin || exit 1; echo $ PATH | tr:\\ n | grep -q $(pwd))&& echo Success ||回聲失敗' –
@WilliamPursell偉大的提示,我不知道!有點像elisp中的save-excursion – jake