Невозможно преобразовать сценарий Bash в сценарий Zsh.
Вопрос
Мне нужно изменить следующий код Bash на Zsh
TODO_OPTIONS="--timeout --summary"
cd ()
{
builtin cd "$@"
RV=$?
[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}
return $RV
}
pushd ()
{
builtin pushd "$@"
RV=$?
[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}
return $RV
}
popd ()
{
builtin popd "$@"
RV=$?
[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}
return $RV
}
# Run todo initially upon login
devtodo ${TODO_OPTIONS}
Я получаю следующую ошибку, когда запускаю Zsh с кодом
todo: error, unknown argument '--timeout --summary', try --help
Я чувствую, что Зш не может понять следующую строку
[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}
Другие команды в первом коде кажутся подходящими для Zsh.
Как преобразовать код в Zsh?
Решение
Вы сохраняете текст как одну строку/объект, а не как простую «вещь для замены».Вы можете либо правильно сохранить строку:
TODO_OPTIONS=(--timeout --summary)
....
devtodo ${TODO_OPTIONS}
Или запустите разделение слов по вашей переменной:
TODO_OPTIONS="--timeout --summary"
....
devtodo ${=TODO_OPTIONS}
Не связан с StackOverflow