В оболочках POSIX:
cd -P -- "$(mycommand)"
$(cmd)
— это замена команды . Он расширяется до стандартного вывода cmd
за вычетом завершающих символов новой строки. "$(cmd)"
. Без кавычек это расширение было бы подвержено разделению + подстановке, что нам здесь не нужно. --
отделяет опции от аргументов. Если вы знаете, что вывод mycommand
не будет начинаться ни с -
, ни с +
, вы можете его опустить. Если нет that
, выведите мой вариант cd
cd
— команда смены текущего каталога. Однако без -P
он может не перейти в каталог, указанный в качестве аргумента, если он содержит компоненты ..
. Или вы можете написать cd $(mycommand)
. Это было бы очень небрежно,но это будет работать при условии, что вывод mycommand
не содержит пробелов, табуляции, новой строки, символов *
, ?
, [
или компонентов ..
и не начинается с -
или +
.
Теперь я слышу, как вы спрашиваете: как мне изменить каталог, оканчивающийся символами новой строки, с помощью этих команд?
Спасибо всем, я использую echo "apps" | adop -status 2>/dev/null
, все работает нормально.
С помощью expect
вы можете подделать терминал для adop
, а затем ввести его через процедуру spawn
:
#!/usr/bin/env expect
spawn -noecho adop -status
send "apps"
expect -ex "Enter the APPS password"
send "thepassword"