Shell开发规范
指定脚本解释器
#!/bin/bas
或#!/bin/sh
#!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH
1和2的区别见以下2篇文章。大致意思是,第二种方式是自己去$PATH下找bash
- Why is it better to use “#!/usr/bin/env NAME” instead of “#!/path/to/NAME” as my shebang?
- What is the difference between “#!/usr/bin/env bash” and “#!/usr/bin/bash”?
声明版本信息
#开头代表注释
1 | # Version: |
声明变量
- 全局变量全部大写中间用”_”连接,类似蟒蛇命名法
- 定义变量
- 格式:
变量名称=值
,例如:var=1
- 如果变量前后都有字符,则
${var}
,防止歧义 - 如果变量是字符串,则
"${var}"
- 如果变量是整性,则
$var
- 格式:
声明函数
1和2都可以,两种方式等价
function f {}
f() {}
单中括号[]和双中括号[[]]
双中括号是bash的语法,[[]]比[]更通用,所以建议优先使用[[]]。另外两者内的语法有些不一样,例如:&&、||、<、>只能在[[]]
中使用,如果使用[[]],则表示方式为[[ $var != 1 ]]
,如果使用[],则表示方式为[ $var -ne 1 ]
,[[]]
内的语法更贴近其他编程语言的习惯。需要注意的是,两者内两边都需要加空格,书写时请不要吝啬你的空格键。