shell脚本介绍,shell脚本结构和执行,date命令用法,shell脚本中的变量
Shell脚本介绍shell是一种脚本语言blog.lishiming.net(阿铭的博客,可以去里面找shell习题)
可以使用逻辑判断、循环等语法
可以自定义函数,减少重复代码
shell是系统命令的集合
shell脚本可以实现自动化运维,能大大增加我们的运维效率
Shell脚本结构和执行
开头需要加#!/bin/bash
以#开头的行作为解释说明
脚本的名字以.sh结尾,用于区分这是一个shell脚本
写一个简简单的脚本
#!/bin/bash
#Linletao
#2018-5-29
echo llt
w
执行方法有两种
1.chmod +x 1.sh; ./1.sh
# chmod +x 1.sh
# ./1.sh
llt
19:50:36 up 30 min,1 user,load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@> root pts/0 192.168.218.1 19:40 4.00s0.10s0.00s /bin/bash ./1.sh
2.bash 1.sh
# bash 1.sh
llt
19:51:10 up 31 min,1 user,load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@> root pts/0 192.168.218.1 19:40 6.00s0.10s0.01s w
3.sh 1.sh
# sh 1.sh
llt
19:52:10 up 32 min,1 user,load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@> root pts/0 192.168.218.1 19:40 2.00s0.11s0.01s w
查看脚本执行过程 bash -x 1.sh
# bash -x 1.sh
[*]echo llt llt
[*]w 19:52:49 up 33 min,1 user,load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@> root pts/0 192.168.218.1 19:40 1.00s0.10s0.00s bash -x 1.sh
查看脚本是否语法错误bash -n 1.sh
写一个错误脚本
#!/bin/bash
#Linletao
#2018-5-29
echo llt
w
for i in 'seq 1 10'
do
echo $i
这里面没有用done结尾
# bash -n 1.sh
1.sh:行10: 语法错误: 未预期的文件结尾
这样能检测出脚本的语法错误
date命令用法
date+%Y-%m-%d, date +%y-%m-%d 年月日
Y为四位的年,如2017。y为两位的年,如17
m为月份。M为分钟
d为日期。D可以直接标记年月日,比如 date +%D 05/29/18
我们也可以将他们组合在一起
# date +%y%m%d
180529
也可以这样执行,data+%F
# date +%F
2018-05-29
date+%H:%M:%S = date +%T 时间
# date+%H:%M:%S
20:31:26
H为小时
M为分钟
S为秒。
时间也可以用date +%T来显示
# date +%T
20:26:58
date +%s时间戳,他的依据是1970年1月1日0点0分到现在过去了多少秒
# cal
五月 2018
日 一 二 三 四 五 六
12345
6789 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
以日历的形式查看日期
date -d "+1day"一天后
date -d "-1 day"一天前
date -d "-1 month" 一月前
date -d "-1 min"一分钟前
date +%w, date +%W 星期
w为周。W为今年的第几周。
Shell脚本中的变量
当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替
使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ... ; fi
引用某个命令的结果时,用变量替代 n=wc -l 1.txt
写和用户交互的脚本时,变量也是必不可少的read -p "Input a number: " n; echo $n 如果没写这个n,可以直接使用$REPLY
内置变量 $0, $1, $2… $0表示脚本本身,$1 第一个参数,$2 第二个 .... $#表示参数个数
数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]
页:
[1]