无法将 Bash 脚本转换为 Zsh 脚本

发布于 2024-07-18 08:30:31 字数 1042 浏览 1 评论 0原文

我需要将以下 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

我觉得 Zsh 无法理解以下行

[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}

第一个代码中的其他命令似乎适合 Zsh。

如何将代码转换为 Zsh?

I need to change the following Bash code to 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} 

I get the following error when I start Zsh with the code

todo: error, unknown argument '--timeout --summary', try --help

I feel that Zsh cannot understand the following line

[ $RV = 0 -a -r .todo ] && devtodo ${TODO_OPTIONS}

Other commands in the first code seems to be right for Zsh.

How can you convert the code to Zsh?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无声静候 2024-07-25 08:30:31

您将文本保存为一个字符串/对象,而不是作为一个简单的“要替换的东西”。
您可以正确保存字符串:

TODO_OPTIONS=(--timeout --summary)
....
devtodo ${TODO_OPTIONS}

或者对变量运行分词:

TODO_OPTIONS="--timeout --summary"
....
devtodo ${=TODO_OPTIONS}

You're saving the text as one string/object, instead of as a simple "thing to substitute".
You can either save the string properly:

TODO_OPTIONS=(--timeout --summary)
....
devtodo ${TODO_OPTIONS}

Or run word splitting on your variable:

TODO_OPTIONS="--timeout --summary"
....
devtodo ${=TODO_OPTIONS}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文