Я пытаюсь сравнить свой рабочий каталог с правильным каталогом, из которого должен запускаться скрипт. Вот фрагмент скрипта оболочки
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
эта команда ничего не делает.