Day 7+Day8:Shell 脚本基础(自动化入门)
本文最后更新于86 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

今日主题

Shell Script 基础

今日目标

今天学完你要能做到:

1、理解什么是 Shell
2、会写第一个脚本
3、会定义变量
4、会接收参数
5、会输出内容
6、开始建立自动化思维

今天最重要的一句话:

把你平时敲的命令,写成文件,让 Linux 自动执行。


一、什么是 Shell

你可以理解成:

你 <-> Shell <-> Linux内核

Shell 就是:

命令解释器

你输入:

ls

Shell 负责:

接收命令

理解命令

调用系统执行

返回结果

常见 Shell:

bash
zsh
sh
fish

你 Mac 默认大概率是:

zsh

Linux 云服务器常见:

bash

先看自己是什么 Shell

敲:

echo $SHELL

可能输出:

/bin/zsh

或者:

/bin/bash

二、第一个 Shell 脚本

创建:

vim hello.sh

写:

#!/bin/bash

echo hello
echo cloud
echo future

第一行:

#!/bin/bash

这叫:

shebang

意思:

用 bash 去执行。


给权限:

chmod +x hello.sh

执行:

./hello.sh

输出:

hello
cloud
future

三、变量

定义:

name=ByteDance

注意:

= 两边不能有空格

错:

name = ByteDance

使用:

echo $name

输出:

ByteDance

多个变量:

company=Tencent
city=Shenzhen

echo $company
echo $city

系统变量

当前用户:

echo $USER

当前目录:

echo $PWD

家目录:

echo $HOME

当前 Shell:

echo $SHELL

四、接收参数

脚本:

#!/bin/bash

echo 第一个参数: $1
echo 第二个参数: $2

运行:

./test.sh nginx prod

输出:

第一个参数: nginx
第二个参数: prod

以后部署脚本:

./deploy.sh blog prod

就靠这个。


五、命令替换

获取当前时间:

now=$(date)
echo $now

获取当前目录:

dir=$(pwd)
echo $dir

获取当前用户:

user=$(whoami)
echo $user

这个特别常用。


六、Day 7 小实验

直接写:

#!/bin/bash

user=$(whoami)
dir=$(pwd)
time=$(date)

echo 用户: $user
echo 目录: $dir
echo 时间: $time

运行它。


七、Day 7 面试题

什么是 Shell?

答:

Shell 是用户和 Linux 内核之间的命令解释器。


什么是脚本?

答:

把多个命令写进文件,让机器自动执行。


shebang 是什么?

答:

#!/bin/bash

指定解释器。



Day 8:判断 + 循环(脚本有脑子)

今日主题

if / for / while

今日目标

今天学完你要能做到:

1、会写条件判断
2、会判断命令是否执行成功
3、会循环执行任务
4、会批量处理文件
5、开始写简单运维脚本

今天最重要的一句话:

让脚本会判断、会循环、会自动处理任务。


一、if 判断

例子:

#!/bin/bash

num=10

if [ $num -gt 5 ]
then
echo 大于5
fi

输出:

大于5

常见比较:

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

字符串判断:

name=cloud

if [ "$name" = "cloud" ]
then
echo yes
fi

二、判断文件是否存在

文件:

if [ -f hello.sh ]
then
echo 文件存在
fi

目录:

if [ -d test ]
then
echo 目录存在
fi

这在部署脚本里很常见。


三、判断命令成功失败

执行:

ping -c 1 www.baidu.com

查看结果:

echo $?

如果:

0

说明成功。

非 0:

失败。


脚本:

ping -c 1 www.baidu.com

if [ $? -eq 0 ]
then
echo 网络正常
else
echo 网络异常
fi

这就是监控脚本雏形。


四、for 循环

for i in 1 2 3 4 5
do
echo $i
done

输出:

1
2
3
4
5

遍历文件:

for file in *
do
echo $file
done

批量创建目录

for i in 1 2 3
do
mkdir test$i
done

生成:

test1
test2
test3

五、while 循环

i=1

while [ $i -le 5 ]
do
echo $i
i=$((i+1))
done

输出:

1
2
3
4
5

六、Day 8 实战脚本

检查 SSH:

#!/bin/bash

systemctl status sshd >/dev/null 2>&1

if [ $? -eq 0 ]
then
echo ssh正常
else
echo ssh异常
fi

这里:

>/dev/null 2>&1

意思:

把输出藏起来,只判断成功失败。

这个以后很常见。


批量 ping

for ip in 8.8.8.8 1.1.1.1
do
ping -c 1 $ip >/dev/null 2>&1

if [ $? -eq 0 ]
then
echo $ip 通
else
echo $ip 不通
fi
done

这已经有点像运维脚本了。


Day 7 + Day 8 今日任务

你只完成这 3 件事:

1、写 hello.sh 并运行
2、写 if 判断脚本
3、写一个 for 循环脚本

复盘模板

# Code 4 云计算复盘 Day 7-8

今日主题:
Shell Script 基础 + 判断循环

掌握:
变量
参数
if
for
while

今天理解:
脚本是自动化基础,可以让 Linux 自动完成重复工作。

面试表达:
Shell 是 Linux 的命令解释器,Shell 脚本是把多个命令写入文件自动执行,可以结合变量、条件判断和循环实现自动化运维任务。
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇