shell

1. shell脚本规范

1. 脚本的开头要有解释器
2. 脚本必须放在同一个目录
3. 脚本必须以.sh结尾
4. 脚本有作者信息和脚本信息

[root@clsn scripts]# cat  scripts_test.sh 
#!/bin/bash
##############################################################
# File Name: scripts_test.sh
# Version: V1.0
# Author: clsn
# Organization: http://blog.znix.top
# Created Time : 2017-12-04 11:39:57
# Description:  First scripts file
##############################################################

5. 脚本注释尽量不用中文

6) 代码书写优秀习惯

  a、成对的内容一次性写出来,防止遗漏,如[  ]、' '、" "等

  b、[  ]两端要有空格,先输入[  ],退格,输入2个空格,再退格写。

  c、流程控制语句一次书写完,再添加内容。(if 条件 ; then  内容;fi)ddd

  d、通过缩进让代码易读。

  f、脚本中的引号都是英文状态下的引号,其他字符也是英文状态。


7. 定时任务必须加执行权限

2. 变量内容的定义


1. 字符串定义方式 name="I am oldboy" 加双引号 解析内部的变量
2. 数字的定义方式 age=1834 必须是连续的数字
3. 命令的定义方式 time=`date` 反引号定义命令
time=$(date) $() 定义命令
time='date' 所见即所

3. 特殊位置变量

1. $0 脚本的名称,如果全路径执行,则名称带全路径,basename获取脚本名称 
2. $n 代表的脚本的第n个参数 $0被脚本名占用 从$1开始 $10后需要加{} 
3. $# 代表了脚本传参的总个数 [ $# -ne 2 ] && echo "请输入两个参数" && exit 1 
4. $* 代表传参的参数 如果不加双引号和$@相同 加了双引号 则所有的参数视为单个字符串 nameoldboyzsls 在脚本中无区别 for循环
5. $@ 代表传参的参数 如果不加双引号和$*相同 加了双引号 则所有的参数视为独立的参数 name oldboy zs ls 在脚本五区别
6. $? 上一条命令返回的结果,0为成功 非0失败 *****
7. $$ 获取脚本的PID echo $$ > /tmp/cutlog.pid ***
8. $! 上一个在后台运行脚本的PID
9. $_ 获取最后一个东东 ESC .

4条件表达式

test -f file 是否为文件
[ -f file ] 是否为文件
[ -d dir ] 是否为目录
[ -e file ] 是否存在
[ -r file ] 文件是否可读
[ -w file ] 文件是否可写
[ -x file ] 文件是否可执行

[ -s file ] 判断文件是否不为空;[ ! -s ] 判断文件是否

-z  字符串为空,为真,否则为假

-n  反过来,字符串有内容,就为真,否则为假

-z 用法

[root@yun:/server/scripts]# test -z "" && echo ok || echo no
ok
[root@yun:/server/scripts]# test -z " " && echo ok || echo no
no

-n 用法

[root@yun:/server/scripts]# test -n " " && echo ok || echo no
ok
[root@yun:/server/scripts]# test -n "" && echo ok || echo no
no

 

test

A 条件  &&  B 条件  ,当A条件成立,并且执行B条件

A 条件  || B 条件  ,当A条件不成立的时候,才会执行B 条件

[root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'
[root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'||touch 1.txt
[root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'||touch 1.txt
文件已存在

 

 

posted @ 2019-10-15 22:09  xiaoxiaoren520  阅读(117)  评论(0编辑  收藏  举报