从bash脚本中删除相对路径

时间:2017-08-11 09:22:56

标签: bash

我有这个bash脚本,我想在同一目录中调用一个文件:

mBinding.fragSocailmediaShareFb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                CM.setSp(getActivity(), CV.SOCIALMEDIA_FB_ID, loginResult.getAccessToken().getUserId());
                ShareOnFB();
            }

            @Override
            public void onCancel() {
                // App code
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
            }
        });
        if (CM.getSp(getActivity(), CV.SOCIALMEDIA_FB_ID, "").toString().length() > 0) {
            ShareOnFB();
        } else {
            mBinding.fragSocailmediaShareFb.performClick();
        }

无论如何,我可以摆脱相对路径或做得更好。

我需要在正确的目录中通过yarn

调用npm脚本

1 个答案:

答案 0 :(得分:0)

您可以使用以下命令获取脚本目录的绝对路径:

ABSOLUTE_PATH_OF_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

这样,在调用cd之前,您可以避免yarn build到脚本的另一个目录。获得绝对路径后,您可以将source次调用转换为绝对值并删除cd行,例如

source "$ABSOLUTE_PATH_OF_SCRIPT"/script/main
source "$ABSOLUTE_PATH_OF_SCRIPT"/../../script/test
cd "$ABSOLUTE_PATH_OF_SCRIPT"/../../packages/applicant
yarn build

虽然就个人而言,相对路径方法感觉更具可读性。目前尚不清楚source语句的目的是什么,并且根据内部结构,它们可能要求您实际cd到初始脚本中的那些目录,但是您可以跟踪脚本的目录在一个变量中,如本例所示,以提高可读性。