如何在shell脚本中比较两个文件路径

如何在shell脚本中比较两个文件路径

我正在尝试将我的工作目录与脚本需要运行的正确目录进行比较。以下是 shell 脚本的片段

CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
    echo "You are running script from correct directory"
fi

在这种情况下,我确保我位于 /proj/project_a/scripts_shell(作为我当前的工作目录),但由于某种原因,它无法在 if 语句中检测到这一点。因此它没有打印消息。

这有什么问题?

答案1

尝试这个:

if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
    echo "You are running the script from the correct directory" 
fi

问题是,当您执行 时CURR_DIR=echo pwd,shell 会pwd调用环境变量CURR_DIR设置为echo。当您需要在变量中捕获命令的输出时,只需执行VAR=$(cmd)

答案2

这是在 BASH 中将命令结果保存到字符串的符号

CURR_DIR=$(pwd)

或者

CURR_DIR=`pwd`

当你输入时,CURR_DIR=echo pwd只会生成CURR_DIR一个“pwd”字符串。这就是 echo 函数的工作原理。例如,在你的 shell 中执行以下行

echo blah blah blah 

这对 blah 命令不起作用。

相关内容