Вызовите команду, как если бы она была вызвана в другом каталоге

Я использую программу командной строки, документация которой гласит:

«Вы можете запустить XXX на входе, расположенном в другом каталоге, но его вывод всегда будет помещен в текущий рабочий каталог». Я хотел бы, чтобы выходные данные были записаны в другой каталог.

Я мог бы (или с cd, или pushd + popd)

  1. перейти в выходной каталог
  2. выполнить команду, чтобы вывод положить туда
  3. , а затем вернуться обратно

или

  1. выполнить команду в моем текущем местоположении
  2. переместить выход на выход папка

... но обе они кажутся неуклюжими и склонны к ошибкам, если скрипт должен быть отредактирован кем-то, кто не знает об этом требовании. Единственное другое решение, которое я могу придумать, - это объединить команды точкой с запятой. Есть ли другой способ?

Кстати, в bash.

5
задан 22 February 2014 в 15:37

1 ответ

используйте круглые скобки, таким образом, CD происходит в подоболочке:

(cd other_dir && xxx)

, Когда это закончится, Ваш текущий рабочий dir не будет изменяться.

CD может перестать работать, так использование && для условного выполнения программы.

0
ответ дан 22 February 2014 в 15:37

Другие вопросы по тегам:

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