sh开始使用sh


备注

sh不是一个单一的shell。相反,它是一个带有POSIX操作系统标准的规范,用于shell的工作方式。任何符合POSIX标准的shell都可以执行针对此规范的脚本,例如

  • bash
  • ksh
  • ash及其衍生物,如dash
  • zsh

在符合POSIX的操作系统中,路径/bin/sh指的是符合POSIX的shell。这通常是一个具有POSIX标准中没有的功能的shell,但是当以sh身份运行时,它将自己限制为其功能的POSIX兼容子集。

参考

回声可移植性

$ for shell in ash bash dash ksh ksh93 zsh; do
>     $shell -c "echo '\\\\'$shell'\\\\'"
> done
\\ash\\
\\bash\\
\dash\
\pdksh\
\\ksh93\\
\zsh\
 

'echo'只能在实现中一致地使用,如果它的参数不包含任何反斜杠(reverse-solidi),并且第一个参数不以短划线(连字符 - 减号)开头。许多实现允许其他选项,例如-e ,即使允许的唯一选项是-n (见下文)。

来自POSIX

如果第一个操作数是-n,或者如果任何操作数包含一个字符,则结果是实现定义的。

你好,世界!

echo

$ echo Hello, world!
Hello, world!
 

使用printf

$ printf 'Hello, world!\n'
Hello, world!
 

作为文件:

#!/bin/sh
printf '%s\n' 'Hello, world!'