Как сравнить два пути к файлам в скрипте оболочки

Как сравнить два пути к файлам в скрипте оболочки

Я пытаюсь сравнить свой рабочий каталог с правильным каталогом, из которого должен запускаться скрипт. Вот фрагмент скрипта оболочки

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, оболочка вызывается pwdс переменной окружения, CURR_DIRустановленной в echo. Когда вам нужно захватить вывод команды в переменной, просто сделайте VAR=$(cmd).

решение2

Это обозначение для сохранения результата команды в строку в BASH.

CURR_DIR=$(pwd)

или

CURR_DIR=`pwd`

Когда вы вводите CURR_DIR=echo pwdэто, создается CURR_DIRпросто строка "pwd". Вот как работает функция echo. Например, выполните следующую строку в вашей оболочке

echo blah blah blah 

эта команда ничего не делает.

Связанный контент