sh vs bash
当涉及外壳脚本时,经常出现两个突出的外壳,伯恩·壳(SH)和伯恩·贝壳(Bourne)再次出现
(bash)。两者都是基于UNIX和Linux系统的组件,提供了与操作系统交互的接口。本文旨在深入研究这两个壳之间的复杂差异,揭示其独特的特征,并提供比较分析,以帮助您了解其中一个何时以及为什么使用其中一个。
SH和Bash简介
伯恩·壳(SH)于1970年代作为Unix的主要外壳引入。贝尔实验室的斯蒂芬
伯恩(Bourne)开发了它,因此名称。 SH以简单性和可移植性而闻名。在创建可以在各种UNIX衍生产品上执行的脚本时,这是一个可靠的选项。
Bourne再次贝壳(Bash)这是Brian Fox为GNU项目开发的原始SH的改进版本
壳牌的免费软件替代方案。 Bash是许多Linux分布和MACOS的默认外壳。它包含其他外壳的功能,例如Kornshell(KSH)和C Shell(CSH),提供了更强大的功能和脚本功能。
SH和Bash之间的主要区别
(1)语法差异
与SH相比,Bash提供了更多的缩写和增强的脚本语法。例如:在Bash中,您可以使用两平方括号语法[[]]测试它,该语法比SH中使用的单平方括号语法[]更健壮和安全。
SH语法:
if [ $a -lt $b ]; then
echo "$a is less than $b"
fi
bash语法:
if [[ $a -lt $b ]]; then
echo "$a is less than $b"
fi
(2)数组变量
Bash支持数组变量,但SH不支持。当您需要处理以单个变量名称下存储的多个值时,数组很有用。
bash语法:
array=("apple" "banana" "cherry")
echo ${array[1]} # Outputs "banana"
(3)命令行编辑
Bash支持命令行编辑,这不是SH中的标准。在Bash中,您可以使用箭头键浏览命令历史记录,使用BackSpace键删除文本,然后使用选项卡来完成文件名和命令名称。
(4)外壳选项
与SH相比,Bash提供了其他外壳选项。例如:BASH中的Shopt命令提供了更改其他外壳的可选行为的能力,而SH在SH中不可用。
(5)流程替代
Bash支持过程替换((命令)),允许使用文件名引用过程的输入或输出。此功能在SH中不可用。
bash语法:
diff <(command1) <(command2)
(6)找不到钩子
Bash具有特殊的Shell函数命令_NOT_FOUND_HANDLE,该命令在找不到命令时执行句柄。此功能在SH中不可用。
(7)这里的字符串
BASH支持“此处的字符串”,这是一种I/O重定向形式,允许字符串用作字符串
本网站每日更新互联网创业教程,一年会员只需98,全站资源免费下载点击查看会员权益