shell规范

一,注释规范
1,申明shell类型
2,程序名称
3,版本号
4,创建时间
5,更改后时间
6,作者信息:作者,联系方式
7,程序作用,注意事项
8,版本更新说明

脚本语法检测:bash -n test.sh
脚本命令语法调试并执行:bash -x test.sh

二,变量
内置变量:PS1,PATH,HISTORY,SHELL,PID,PPID,$?,$$,UID,HISTSIZE
自定义变量

变量命名法则:1,驼峰法,2,全大写,3,以下划线连接_,4,局部变量小写

位置变量:
$1,$2..${10}
$0 命令本身包括路径

清空所有位置变量:set --

$? 值为0------成功
$? 值为1-255----失败

格式化输出:
%s-------------字符串
%f--------------浮点格式(小数点)
%%--------------表示%本身

\t--------------tab空格
\n--------------换行
\r--------------回车
\f--------------换页

取随机数:$RANDOM (0-32767)

取10以内的随机数:echo $[RANDOM%10]

增强型赋值:
+= i+=10 i=i+10
-= i-=j i=i-j
= i=j i=i*j
/=
%= i%=j i=i%j
++ i++ i=i+1
-- i-- i=i-1

字符串测试
[[]] 使用正则匹配或通配符
[] 普通用法

==字符串相同
=~字符串包含,右包含左

[15:43:[email protected] myshell]#[[ $file == .txt ]]
[15:43:[email protected] myshell]#echo $?
0
[15:43:[email protected] myshell]#[[ $file == "
.txt" ]]
[15:43:[email protected] myshell]#echo $?
1
若作为通配符不要加"",加引号相当于转义

-r 可读
-w 可写
-x 执行
-u 存在且有suid权限 文件用户属主权限
-g 存在且右sgid权限 创建文件可继承属组
-k 存在且有sticky权限 不可删除他人文件

组合条件测试
[ test1 -a test2 ] 条件一和二都满足为真
[ test1 -o test2 ] 条件一和二满足其一为真

&&和||混和使用,&&条件测试需在前

数组定义
array=(可以是命令结果或者其他元素)
numa=${array1[*]} --------取出数组中所有元素
numb=${#array1[@]} --------取数组中元素的个数
numd=${!array1[@]} --------取数组中元素的下标

根据下标取元素:${arrary[0]} //${arrary[$numd}

相关推荐