shell规范

笑着哭i 提交于 2020-08-16 10:13:08

一,注释规范
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 命令本身包括路径br/>$*传递给脚本的所有参数,合成一个字符串
$@传递给脚本的所有参数,每个参数独立
$#传递给脚本的参数的个数
注意 :$@,$*只在被双引号包起来才有差异




清空所有位置变量: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:05-root@jack myshell]#[[ $file == .txt ]]
[15:43:11-root@jack myshell]#echo $?
0
[15:43:14-root@jack myshell]#[[ $file == "


.txt" ]]
[15:43:20-root@jack 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}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!