문제
다음 배쉬 코드를 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
ZSH가 다음 줄을 이해할 수 없다고 생각합니다
[ $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