Трубопровод используется в тех случаях, когда команда ожидает параметры от стандартного ввода.( Подробнее об этом ).
С командой cd
это не так.Каталог является аргументом команды.В таком случае вы можете использовать подстановку команд.Используйте обратные пометки или $(...)
для оценки команды, сохраните ее в переменной ..
path=`which oracle`
echo $path # just for debug
cd $path
, хотя это можно сделать намного проще:
cd `which oracle`
или, если ваш путьимеет специальные символы
cd "`which oracle`"
или
cd $(which oracle)
, которые эквивалентны нотации обратного тика, но рекомендуется (обратные тики могут быть перепутаны с апострофами)
.. но этовыглядит так, как вы хотите:
cd $(dirname $(which oracle))
(что показывает, что вы можете легко использовать вложение)
$(...)
(а также обратные метки) работают также в строках с двойными кавычками, что помогаеткогда результат может в конечном итоге содержать пробелы ..
cd "$(dirname "$(which oracle)")"
(Обратите внимание, что для обоих выходов требуется набор двойных кавычек.)