Shell

shell是什么?

shell是一种脚本语言
可以使用逻辑判断、循环判断等语句;
可以自定义函数;
shell是系统命令的集合,比如Windows的批处理命令;
shell脚本可以实现自动化运维,能打打增加我们的运维效益;

shell脚本结构

开头必须加#!/bin/bash
也就是调用/bin/bash的内核运行
脚本的名字以.sh结尾,用来区分是一个shell脚本;

执行方法有两种:

1.作为可执行程序

chmod +x 1.sh       //是脚本具有执行权限
./1.sh                       //执行脚本

2.作为解释器参数

bash 1.sh                              //也可以sh 1.sh

查看脚本执行过程:bash -x 1.sh
查看脚本是否语法错误:bash -n 1.sh


date日期命令

年月日:

命令:date +%Y-%m-%d
输出:2018-04-17

命令:date +%F
输出:2018-04-17

命令:date +%y-%m-%d
输出:18-04-17

命令:date +%Y%m%d
输出:20180417

时间:

命令:date +%H:%M:%S
输出:20:23:16

命令:date +%T
输出:20:23:16

周:

%w:这个月第几周
%W:今年第几周

时间戳:

date +%s
date -d @1504620492

增加减少年月日:

date -d "+1day" 一天后
date -d "-1 day" 一天前
date -d "-1 month" 一月前
date -d "-1 min" 一分钟前


变量

命名规则:

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。

shell数值:

a=1;b=2;        //给变量a赋予数值1,变量b赋予数值2
c=$(($a+$b))    //c=a+b,使用运算必须前面加$

shell字符串:

字符串时shell变成中最常用最有用的数据类型(数字和字符串),字符串可以用单引号,也可以用双引号;

单引号:

str=‘this is a string’

无法使用转义符和变量;

双引号:

your_name='aaaa'
str="Hello,I know your are \"$your_name\"! \n"

双引号的优点:可以有变量,可以出现转义符;

反引号:

反引号可以将命令结果传递给变量
假如1.txt有3行,

n=`wc -l 1.txt`
echo n

输出:3 1.txt

美元符号:

美元符号$
当使用变量时候,也就是进行变量与变量之间数学运算,或是将命令传递给某个变量都可以使用;
c=$(($a+$b))
n=$(wc -l 1.txt)

调用变量值必须在前面带$符号
引用某个命令的结果时,用变量替代 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]