Ruby 到 bash 脚本的翻译

发布于 2024-11-09 06:13:16 字数 85 浏览 0 评论 0原文

我们有一些 ruby​​ 脚本需要转换为 bash 脚本。过去有没有人做过这个或类似的事情(比如从 python 到 bash)。您对我有什么指导/启发吗?

We have a few ruby scripts that needs to be translated to bash scripts. Has anyone done this or similar thing in the past (say from python to bash). Do you have any guidelines/heuristics for me.

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

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

发布评论

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

评论(2

好多鱼好多余 2024-11-16 06:13:16

第一条准则是:不要这样做。如果您的脚本已经可以工作,那么通过翻译它们来使其无法工作是没有意义的。

第二条准则是:翻译任务,而不是代码。这一点特别重要,因为您正在从一种功能更强大的语言转向一种功能更弱的语言。

The first guideline is: Don't do it. If your scripts already work then there's no point in making them possibly not work by translating them.

The second guideline is: Translate tasks, not code. This is especially important since you're moving from a more-capable language to a less-capable one.

温柔戏命师 2024-11-16 06:13:16

我不想评判你的想法,因为不可能判断什么对特定的工作更好。也许是 bash,也许是 ruby​​。这是我的 0.02 美元:

  • 将任务分解为更小的任务。尝试为给定的较小任务找到一些 shell 命令(或 unix 可执行文件)。例如: files = Dir.glob("*.jpg") => ls *.jpg 对于此任务,您应该了解尽可能多的 unix 命令。尝试 ls /bin /usr/bin 并检查您的命令。你认识他们吗?如果不是 - 转换将是一项艰巨的任务...;)

  • 单独调试每个较小的任务(如果可能)

  • 使用尽可能多的 shell尽可能内置。 (它们通常比运行外部命令快一点)您知道您的 shell 有哪些内置命令吗?

  • 尽可能使用管道将较小的任务连接到大任务中。这是最难的部分。当代码可以单独运行并使用标准输入/输出(管道就绪)时,将代码分解为较小的任务是最好的。通常需要(稍微)改变应用程序的逻辑。

  • 如果你有相当新的 bash 版本 - 例如,你也可以将它用于某些网络编程:

bash 网络与 /dev/{tcp|udp} - 与您的 /dev/ 目录没有任何关系 - 它们是 bash 的内部结构。

exec 3<>/dev/tcp/www.google.com/80
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

I don't want judge your idea, because it is impossible to tell what is better for the given job. Maybe bash, maybe ruby. So here are my $0,02:

  • break the task to smaller tasks. Try find some shell command (or unix executable) for the given smaller task. for example: files = Dir.glob("*.jpg") => ls *.jpg For this task, you should know as much unix commands as much possible. Try ls /bin /usr/bin and check your commands. Do you know them? If not - converting will be an hard task... ;)

  • debug each smaller task alone (if it is possible)

  • use as much shell built-ins as possible. (they are usually a little bit faster than running external commands) Do you know what built-ins have your shell?

  • use pipes as much as possible for connecting smaller task into big one. This is the hard part. Breaking up code to smaller tasks are the best when they're can run alone, with stdin/out (pipe ready). Usually need (somewhat) changing the logic of the application.

  • if you have reasonably new version of bash - you can use it for some network programing too, for example:

bash networking with /dev/{tcp|udp} - has nothing with your /dev/ directory - they are bash's internals.

exec 3<>/dev/tcp/www.google.com/80
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文