Привет всем,

В настоящее время я борюсь с необходимостью выполнять несколько команд в эхо. Следующая строка - пример проблемы, с которой я столкнулся:

echo (cd .. && pwd)

Идея состоит в том, что, когда я в настоящее время нахожусь в папке "home/Documents", вышеуказанный код печатает "home" - но все еще находится в каталоге "home/Documents". Однако вышеприведенная команда не выполняется.

Более общий вопрос: как я могу выполнить несколько команд в эхо и напечатать последний результат (или все результаты, если это невозможно каким-либо другим способом).

Спасибо и всего наилучшего.

2 ответа2

2

Идея состоит в том, что, когда я в настоящее время нахожусь в папке home/Documents , приведенный выше код печатает home - но все еще находится в каталоге home/Documents

Вам вообще не нужно echo потому что pwd печатает то, что вы хотите. Использовать этот:

(cd .. && pwd)

Здесь есть две умные вещи:

  • (whatever) работает whatever в подоболочке. Если cd находится внутри этих скобок, он изменит текущий рабочий каталог subshell, а не основной (вашей текущей) оболочки.
  • a && b работает b тогда и только тогда успешной атаки (возвращенного статус выхода a В общем, если вы хотите, чтобы ваш скрипт, использующий 0 был надежным, хорошо всегда проверять, успешно ли cd . Это предотвращает запуск других команд в неправильном каталоге.

Обратите внимание, что когда задействованы символические ссылки, вы можете не получить ожидаемый путь. Смотрите этот вики ответ сообщества для деталей.

-1

Я нашел решение:

(cd .. && echo `pwd`)

Спасибо :)

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