3

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

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. Таким образом, это не печать сообщения.

Что не так с этим?

2 ответа2

5

Попробуй это:

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) .

0

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

CURR_DIR=$(pwd)

или же

CURR_DIR=`pwd`

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

echo blah blah blah 

это ничего не делать с бла команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .