Browse Source

增加 22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md

Gore Liu 6 years ago
parent
commit
be427fac8b

+ 7 - 0
00_Zsh-开发指南(目录).md

@@ -307,3 +307,10 @@
 
 ---
 
+## [第二十二篇 Bash 和 zsh 用法简明对照表](22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md)
+### [导读](22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md#导读)
+### [Bash 和 zsh 用法简明比较表](22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md#bash-和-zsh-用法简明比较表)
+### [总结](22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md#总结)
+
+---
+

+ 22 - 0
22_Zsh-开发指南(第二十二篇-Bash-和-zsh-用法简明对照表).md

@@ -0,0 +1,22 @@
+### 导读
+
+习惯写 bash 的开发者容易将 bash 下的用法用在 zsh 上,虽然多数情况并不会产生错误,但往往会多做很多不必要的工作,让脚本显得更臃肿或难以理解。
+
+### Bash 和 zsh 用法简明比较表
+
+| Bash 用法                | Zsh 用法                | 说明                                 |
+| ---------------------- | --------------------- | ---------------------------------- |
+| `"$var"`               | `$var`                | 避免变量中有空格导致异常                       |
+| `"$@"`                 | `$*`                  | 避免变量中有空格导致异常                       |
+| `"${array[@]}"`        | `$array`              | 取数组所有元素,`@` 可改成 `*`                |
+| `"${#array[@]}"`       | `$#array`             | 取数组中元素个数,`@` 可改成 `*`               |
+| `"${array[n - 1]}"`    | `$array[n]`           | 取数组第 n 个元素,bash 从 0 开始,zsh 从 1 开始  |
+| `"$array"`             | `$array[1]`           | Bash 中的 `$array` 是取数组的第一个元素        |
+| `echo a*b`             | `echo "a*b"`          | Zsh 默认配置中,通配符如果匹配不到文件会报错           |
+| `if true; then :; fi`  | `if true {}`          | Zsh 中不需要使用 `:` 作为空语句               |
+| `[ "$var" == value ]`  | `[[ $var == value ]]` | Zsh 中的 `[ ]` 里不支持 `==`,一律用 `[[ ]]` |
+| `ls | tee file | less` | `ls > file | less`    | Zsh 中不需要用 `tee` 即可实现相同功能           |
+
+### 总结
+
+本文简单列出了一些 zsh 中已经不再需要的 bash 用法,以及 zsh 和 bash 行为不一致的用法。待补充。