![如何在shell脚本中比较两个文件路径](https://linux22.com/image/1353067/%E5%A6%82%E4%BD%95%E5%9C%A8shell%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84.png)
我正在尝试将我的工作目录与脚本需要运行的正确目录进行比较。以下是 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 命令不起作用。