写一个 bash zsh 和 fish 都能跑的脚本

写一个 bash zsh 和 fish 都能跑的脚本

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文介绍了在bash、zsh和fish三种常见shell中编写脚本的方法,包括编写不同shell版本和通用版本的解决方案,使用alias命令解决bash和fish之间的语句不兼容问题,以及在zsh中使用unalias命令取消alias设置以解决语法错误问题。

🎯

关键要点

  • bash和zsh实现了POSIX shell标准,兼容性较好。
  • fish不符合POSIX标准,语法不兼容。
  • 可以为不同的shell编写不同版本的脚本,并通过通用版本执行。
  • 使用type命令判断命令是否存在,以执行相应的脚本。
  • POSIX shell使用then和fi,fish shell使用end,导致语法矛盾。
  • 可以使用alias命令将then和fi在fish中变为no-op,end在bash中变为no-op。
  • 在zsh中使用alias时可能会出现语法错误,需要使用unalias取消alias设置。
  • 通过type命令判断unalias是否存在,实现三种shell兼容的if-else语句。
🏷️

标签

➡️

继续阅读