我使用的是 Ubuntu 14.04.02 32 位。
在进行一些 shell 编程时,我发现通过 sh 命令运行脚本有时会导致错误。
是因为 sh 命令调用的是 dash shell 而不是 #!/bin/bash 吗?
我在使用 select 命令时遇到问题。
当我通过./scriptName.sh执行它时一切顺利,但是sh scriptName.sh报告语法错误。为什么会发生这种情况?
答案1
如果您的脚本使用 bash 语法,则它必须以#!/bin/bash
.如果你执行它,/path/to/script
那么一切都会好起来的。如果您显式调用解释器(shell),那么您需要调用正确的解释器,即bash
,not sh
orperl
或其他什么。
有多种变体sh
。巴什就是其中之一。达世币是另一个。与 bash 相比,dash 功能较少,但速度更快且占用内存更少。这就是为什么 Ubuntu 选择使用破折号作为sh
;如果您需要 bash 的额外功能,那么无论如何您都应该显式调用它。