문제

다음 배쉬 코드를 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}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top