Dash

Dash #

Dash 与 Bash 的区别 #

  1. 定义函数

bash: function 在 bash 中为关键字

dash: dash 中没有 function 这个关键字

2.select var in list; do command; done

bash: 支持

dash: 不支持,替代方法:采用 while+read+case 来实现

  1. echo {0..10}

bash: 支持 {n..m} 展开

dash: 不支持,替代方法,采用 seq 外部命令

  1. here string

bash: 支持 here string

dash: 不支持,替代方法:可采用 here documents

  1. &word 重定向标准输出和标准错误

bash: 当 word 为非数字时,>&word 变成重定向标准错误和标准输出到文件 word

dash: >&word, word 不支持非数字,替代方法: >word 2>&1; 常见用法 >/dev/null 2>&1

  1. 数组

bash: 支持数组,bash4 支持关联数组

dash: 不支持数组,替代方法,采用变量名 + 序号来实现类似的效果

  1. 子字符串扩展

bash: 支持 ${parameter:offset:length},${parameter:offset}

dash: 不支持, 替代方法:采用 expr 或 cut 外部命令代替

  1. 大小写转换

bash: 支持 ${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern}

dash: 不支持,替代方法:采用 tr/sed/awk 等外部命令转换

  1. 进程替换 <(command), >(command)

bash: 支持进程替换

dash: 不支持,替代方法,通过临时文件中转

  1. [string1 = string2] 和 [ string1 == string2 ]

bash: 支持两者

dash: 只支持 =

  1. [[ 加强版 test

bash: 支持 [[]], 可实现正则匹配等强大功能

dash: 不支持 [[]], 替代方法,采用外部命令

  1. for (( expr1 ; expr2 ; expr3 )) ; do list ; done

bash: 支持 C 语言格式的 for 循环

dash: 不支持该格式的 for, 替代方法,用 while+$((expression)) 实现

  1. let 命令和 ((expression))

bash: 有内置命令 let, 也支持 ((expression)) 方式

dash: 不支持,替代方法,采用 $((expression)) 或者外部命令做计算

  1. $((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


本文访问量

本站总访问量

本站总访客数