Dash #
Dash 与 Bash 的区别 #
- 定义函数
bash: function 在 bash 中为关键字
dash: dash 中没有 function 这个关键字
2.select var in list; do command; done
bash: 支持
dash: 不支持,替代方法:采用 while+read+case 来实现
- echo {0..10}
bash: 支持 {n..m} 展开
dash: 不支持,替代方法,采用 seq 外部命令
- here string
bash: 支持 here string
dash: 不支持,替代方法:可采用 here documents
-
&word 重定向标准输出和标准错误
bash: 当 word 为非数字时,>&word 变成重定向标准错误和标准输出到文件 word
dash: >&word, word 不支持非数字,替代方法: >word 2>&1; 常见用法 >/dev/null 2>&1
- 数组
bash: 支持数组,bash4 支持关联数组
dash: 不支持数组,替代方法,采用变量名 + 序号来实现类似的效果
- 子字符串扩展
bash: 支持 ${parameter:offset:length},${parameter:offset}
dash: 不支持, 替代方法:采用 expr 或 cut 外部命令代替
- 大小写转换
bash: 支持 ${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern}
dash: 不支持,替代方法:采用 tr/sed/awk 等外部命令转换
- 进程替换 <(command), >(command)
bash: 支持进程替换
dash: 不支持,替代方法,通过临时文件中转
- [string1 = string2] 和 [ string1 == string2 ]
bash: 支持两者
dash: 只支持 =
- [[ 加强版 test
bash: 支持 [[]], 可实现正则匹配等强大功能
dash: 不支持 [[]], 替代方法,采用外部命令
- for (( expr1 ; expr2 ; expr3 )) ; do list ; done
bash: 支持 C 语言格式的 for 循环
dash: 不支持该格式的 for, 替代方法,用 while+$((expression)) 实现
- let 命令和 ((expression))
bash: 有内置命令 let, 也支持 ((expression)) 方式
dash: 不支持,替代方法,采用 $((expression)) 或者外部命令做计算
- $((expression))
bash: 支持 id++,id–,++id,–id 这样到表达式
dash: 不支持 ++,–, 替代方法:id+=1,id-=1, id=id+1,id=id-1
为什么 Ubuntu 要将 sh 链接到 dash #
因为 Ubuntu 不存在 sh。而系统很多脚本指定用 sh。
/bin/sh
is meant for system scripts, which may or may not have come from older versions of Ubuntu and/or other systems.
参考:https://askubuntu.com/questions/976485/what-is-the-point-of-sh-being-linked-to-dash
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。