【发布时间】:2009-11-23 22:16:40
【问题描述】:
我正在构建一个小型 shell 脚本,用于在各种 unix 系统上查找 cat/man 页面...在 bash 中,我可以通过这样做来构建所有可能的路径:
# default search paths
default=$(echo /usr/{share, local, dpkg, XR11}/man/{man, cat}{1..8})
for path in $default
do
...
done
不幸的是,我不得不使用 sh...我可以用循环构建路径,但这看起来真的很难看...有没有更简洁/更短的方法?
【问题讨论】:
-
你说的“sh”是什么意思?最初的 bourne shell 已经有一段时间没有出现了。你到底有什么外壳?
-
@bmargulies: waddya 是什么意思?它(Bourne shell)在 Unix(AIX、HP-UX、Solaris)上仍然是标准的。当然不是在 MacOS X 或 Linux 上,其他 shell 在 AIX、HP-UX、Solaris 上可用。但是 Bourne shell 在某些地方仍然是标准的。
-
这是一个大学项目...该脚本应该能够在尽可能多的 unix 系统上工作,因此决定使用 sh 以获得更大的向后兼容性
-
顺便说一句,Bash 不会对大括号扩展中的空格感到满意。
-
@bmargulies:
ash,sash,bash中的sh兼容模式(尝试以/bin/sh调用它,看看你得到了什么),busybox 中的外壳等. 等等. 普通的 Bourne shell 仍然是最安全的脚本默认设置。