Skip to content

Latest commit

 

History

History
32 lines (20 loc) · 1.96 KB

README.md

File metadata and controls

32 lines (20 loc) · 1.96 KB

shell

shell语法总结

常见易错总结

数组

  • 数组的遍历:使用for来遍历是最佳的,while用角标来访问,不一定能够访问所有的数组;举例:用下标申明数组时,arr[10]=1;这个时候获取数组长度为1,但是0-9都是空,只有第十个元素为1;arr.sh中有demo,有兴趣的朋友可以自己尝试。

传参

  • 函数传参使用$*和$@区别:函数使用$*传参,其实只传入了一个参数,是所有参数的一个字符串集合,所以只有一个;要准确传参的话,还得使用$@;

运算符

  • 关系运算符:!=表示(不等于);但是<、>、<=、>=这些需要用-lt、-gt、-le、-gt等替换;
  • 逻辑运算符:&& || 这两需要两个中括号[[]]

扩展模式

  • 大括号中括号扩展模式,如果不存在,中括号不会扩展,大括号会扩展:[ab].txt,如果不存在a.txt或者b.txt,则会查找[ab].txt;{a,b}.txt不存在也会照样扩展;
  • {start..end}扩展:连续序列生成,如{a..z}可以扩展成26个小写英文字母;支持逆序,{z..a},26个字母的倒序;如果无法理解,则会原样输出,不扩展;
  • {start..end..step}:step表示步长,如:{0..8..2},0到8的数,按2的步长增长,则输出0 2 4 6 8;但是MacOS又不能正常输出,Linux可以正常输出;

其他

  • expr index这个表达式在MacOS中执行会报错:expr:syntax error;但是Linux中没有问题。因为MacOS使用BSD expr,没有index指令,Linux通常使用GNU的expr,所以有这个命令;
  • -e命令是开启转义:echo "hello \n";echo -e "hello \n";两个输出不一样;
  • 为了检测上一个命令执行的结果,可以使用'$?'获取最后运行命令的结束代码返回值(0表示没有错误,非0表示执行有问题);
  • 斗鱼学习shell地址
  • daoCloud Docker安装(学习shell地址)