shell脚本笔记

shell基于 /bin/bash 或者 /bin/sh

开头必有 !是告知运行的地方

#!/bin/bash 第二行说脚本是干嘛的

运行方式

chmod  权限    脚本
./ 脚本 、 
source 脚本 、 
/bin/bash 脚本   -n 为进行脚本测试有无问题 没有输出大概🆗! 
sh 脚本
用=赋值变量  字符串加“”号

输出 变量要加 $

$0 为当前程序(脚本)的name  
$N为 脚本后跟的第N个参数
$# 脚本加了几个参数    
$? 上一条命令是否正确 正确输出0                           
$* 输出所有参数
&& 上一段命令成功了后在执行小一段
; 不论上一条命令是否成功都执行下一条命令

输出echo带颜色(绿)

echo -e "\033[32m  ############### \033[0m"  #一行为绿色
echo -e "\033[32m  ############### \033[1m"  #之后打印都为绿色

shell的if语句

if [ command ];then                ((为判断大于小于和整数型的计算))
	   符合该条件执行的语句             [bash 的内部命令]
elif [ command ];then             [[使用[[ ... ]]条件判断结构,而不是[ ... ],能够
                                           防止脚本中的许多逻辑错误。]]
     符合该条件执行的语句
else
     符合该条件执行的语句
fi

shell的for语句

for i in `seq 1 15`
do 
		echo "the number $i"
done
--------------------------------------
for ((i=0;i<=100;i++))
do 
		echo "the number $i"
done

expr 10 + 10
20
seq [选项]... 起始值 增量 结束值

shell的while语句

i=0
while [[ $i < 10 ]]
do 
	echo "the number $i"
	((i++))
done

文件测试运算符

-d file	检测文件是否是目录,如果是,则返回 true。
-f file	检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。
-e file	检测文件(包括目录)是否存在,如果是,则返回 true。
-s file	检测文件是否为空(文件大小是否大于0),不为空返回 true。
-r file	检测文件是否可读,如果是,则返回 true。	
-w file	检测文件是否可写,如果是,则返回 true。	
-x file	检测文件是否可执行,如果是,则返回 true。

输出日期

echo `date +%Y%m%d`  #可以输出年月日
大写的Y输出YYYY   同理其他大写的会更加规范!
小写的Y输出YY
在号 `中的代码会被认为一句指令

expect使用方法

expect中相关命令 
-c:从命令行执行expect脚本,默认expect是交互地执行的
           spawn:启动新的进程 
           send:用于向进程发送字符串 
           expect:从进程接收字符串 
           interact:允许用户交互,此命令后由用户输入代码
					 expect eof :等待执行结束,用于执行自动化任务,无需后续继续交互,直接完
           exp_contine:继续执行下一个交互
成并退出。
——————————————————————————————————————————————————————————————————————————————————————
格式1:
expect "Name" {send "ftp\n";exp_contine }
格式2:
expect "$case1"
send "$response1\r"
**符号        ASCII码        意义**
\n               10          换行  到行首
\r                13         回车  下移
————————————————————————————————————————————————————————————————————————————————————
**expect 可以有多个分支,就像switch语句一样。**
expect 
{
    "$case1" {send "$response1\r"}
    "$case2" {send "$response2\r"}
    "$case3" {send "$response3\r"}
}
示例——————————————————————————————————————————————————————
#!/usr/bin/expect 这是只有expect时
spawn ssh root@10.0.100.203
expect {
"*password" { send "000000\r" }
}
interact

备份数据库

#!/bin/bash

BACKUP_DIR=/tmp/backup/`date +%Y%m%d`
mysqluser=root
mysqlpass=000000
msyqldb=keystone
if [ $UID -ne 0 ];then
        echo "sorry u no root!"
        exit
fi

if [ ! -d $BACKUP_DIR ];then
        mkdir -p $BACKUP_DIR
        echo "mkdir $BACKUP_DIR ok !"
else
        echo "$BACKUP_DIR ok!!!!"
fi

mysqldump -u$mysqluser -p$mysqlpass -d $msyqldb >$BACKUP_DIR/$msyqldb.sql
if [ $? -eq 0 ];then
        echo "ok!!"
fi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guest-yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值