Эхо: несколько команд

387
bublitz

Привет всем,

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

echo (cd .. && pwd) 

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

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

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

0
Что бы вы ни пытались здесь сделать, я почти уверен, что «эхо» - не тот инструмент. Я помню [ваш предыдущий вопрос] (https://superuser.com/q/1351925/432690), вы, кажется, злоупотребляли `echo`. Пожалуйста, смотрите [Проблема XY] (https://meta.stackexchange.com/a/66378/355310). Что вы на самом деле пытаетесь сделать с этим устройством? Kamil Maciorowski 5 лет назад 3
Другой поток - настоящая проблема - сначала sudo su, затем lftp, а затем несколько команд echo - но я думаю, что настоящая проблема заключается в echo - поэтому я задал этот вопрос в надежде, что он также ответит и на другой. bublitz 5 лет назад 0
Прежде всего, этот синтаксис неправильный. Ни bash, ни zsh не могут разобрать это. Как ты запустил его? `echo (cd .. && pwd) bash: синтаксическая ошибка рядом с неожиданным токеном cd'` Fanatique 5 лет назад 1
Вы слишком одержимы моим примером - я написал это, чтобы прояснить проблему, которая у меня есть. В следующий раз лучше постарайтесь решить это по-своему, а не критиковать пример. Ниже решение, которое я нашел :-) bublitz 5 лет назад 0
«вместо того, чтобы критиковать пример» - люди не понимают ваш код (здесь и в другом вопросе). Вы можете поверить, что ваш код говорит само за себя, но это не так. Извините, это так неправильно и волосато, что вызывает моменты WTF. В этом нет ничего постыдного, мы все начали ничего не знать. На мой взгляд, вам нужно изучить инструменты, которые вы используете, и понять их. Мы можем помочь вам с этим. На вопрос "что не так с` echo \ `pwd \` `?" хорошее начало Kamil Maciorowski 5 лет назад 2
Пожалуйста, посмотрите это: [Что не так с `echo $ (stuff)` или `echo \` stuff \ ``?] (Https://superuser.com/q/1352850/432690) Kamil Maciorowski 5 лет назад 0

2 ответа на вопрос

2
Kamil Maciorowski

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

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

(cd .. && pwd) 

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

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

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

-1
bublitz

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

(cd .. && echo `pwd`) 

Спасибо :)

Почему вы все еще используете эхо? Просто сделайте `(cd .. && pwd)` Attie 5 лет назад 4
Связанный: [Программирование Cargo Cult] (http://www.catb.org/jargon/html/C/cargo-cult-programming.html). Kamil Maciorowski 5 лет назад 2
Да, тебе это нужно. Проблема заключалась в том, что команду нужно выполнить на сервере, и поэтому мне нужно напечатать эхо (чтобы сервер видел команду «pwd», а не текущую папку - что будет недопустимой командой) bublitz 5 лет назад 0

Похожие вопросы