以下脚本出自鸟哥第十二章。

关于dash和bash的一点记录

关于上述脚本,在以下方式运行时会报错:

关于dash和bash的一点记录

简单来说就是方括号里的操作解析不了。

看一下sh是什么:

关于dash和bash的一点记录

发现sh其实是dash的符号链接。所以在用sh解析脚本时,实际上使用dash解析的脚本。dash并不认识这个命令,因为我们使用满足bash的语句写的,因此,用bash解析:

关于dash和bash的一点记录

查看我的当前shell:

关于dash和bash的一点记录

发现是bash,因此我可以用./形式来运行:

关于dash和bash的一点记录

实际上,在bash中,==和=号是等价的,但在dash中只能用=号,因此通过修改脚本也能使脚本运行正常:

在bash中将==号改为=号:

关于dash和bash的一点记录

关于dash和bash的一点记录

可以看出,修改成=号之后,无论什么方式都可以解析成功,使用==的意义在于,在各种程序中,==号经常用作判断两边元素的相等性,更具有可读性。

相关文章: