您的位置:首页 > 教育 > 锐评 > 外贸推广信邮件_钢化网_北京seo运营_温州企业网站排名优化

外贸推广信邮件_钢化网_北京seo运营_温州企业网站排名优化

2025/9/12 11:28:26 来源:https://blog.csdn.net/China_I_LOVE/article/details/144114676  浏览:    关键词:外贸推广信邮件_钢化网_北京seo运营_温州企业网站排名优化
外贸推广信邮件_钢化网_北京seo运营_温州企业网站排名优化

作业一 写计算器

使用bc命令

需要进行安装bc

代码如下:

#!/bin/bash
echo "-----------------------------------"
echo "输入  f  退出"
echo "可计算小数和整数"
echo "用法如:1.1+2.2"
echo "-----------------------------------"
while true; doread -p "请输入需要计算的表达式: " expressionif [ "$expression" == "f" ]; thenbreakfiresult=$(echo "$expression" | bc)echo "您输入的值是: $result"
done

在这里插入图片描述

使用(())

#!/bin/bash
echo "---------------------------------"
echo "输入  f   退出"
echo "运算符前后请以空格隔开"
echo "用法如:1 + 2"
echo "---------------------------------"
while true
doread -p "请输入需要计算的表达式: " expressionif [ "$expression" == "f" ]; thenbreakfiresult=$(($expression))echo "您输入的值是: $result"done

在这里插入图片描述

或者这里还可以使用case对接收的运算符进行判断,然后在每个分支进行对应的操作即可

作业二 阶乘

#/bin/bash
echo "-------------------------------"
echo "输入   f   退出"
echo "计算阶乘"
echo "-------------------------------"summerize(){result=$(($1 * result))
}
while true
doread -p "请输入一个数字: " numif [ "$num" == "f" ];thenbreakfiif [ "$num" == "0" ];thenecho "阶乘为0"breakfiresult=1for ((;num>0;num--))dosummerize numdoneecho "阶乘为: $result"
done

在这里插入图片描述

扩展一 获取eth0网卡IP

使用grep

#!/bin/bashfor i in $(seq 0 10)
doresult=$(ip addr show eth$i 2>/dev/null | grep -Eo "inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}"|grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}")if [ -n "$result" ];thenecho "eth$i的IP是:$result"fi
done

ip addr show eth0表示只显示网卡eth0的信息

grep中的用法很多

  1. -A 2 "eth0" 表示显示包括eth0所在行的后面2行
  2. -E使用正则表达式
  3. -o表示只显示匹配到的

正则表达式中很多

  1. ^a 表示以a开头的

  2. .* 贪婪匹配,就是匹配任何东西

  3. q$ 表示以q结尾

    grep -Eo "^a.*q$" 表示只显示以a开头,以q结尾的字段

  4. [1-9] 表示数字1-9的任意一个

  5. {1,3} 表示匹配范围,长度

    [1-9]{1,3} 表示匹配1-9中的任意一个数字,数字范围在1-3

在这里插入图片描述

使用awk

#!/bin/bash
for i in $(seq 0 10)
doresult=$(ip addr show eth$i 2>/dev/null | awk '$1 == "inet" && $2 !~ /:/  {print $2}')if [ -n "$result" ];thenecho "eth$i的IP是:$result"fi
done
  1. /inet / 这是匹配模式,当字段中有inet加空格时,定位到这里
  2. {print $2} 表示定位到inet这一行地方时,输出第二个字符,空格隔开为字符终止
  3. 所以这里的$1是inet,$2是inet后面的一段字符
  4. $1 == "inet"这个条件用于匹配输出中每行的第一个字段等于inet的情况
  5. !~不匹配
  6. $2!~ /:/这里是判断每行的第二个字段(也就是我们实际要获取的 IPv4 地址部分)不匹配包含:的正则表达式,以此来排除 IPv6 地址。
  7. -F'/' 表示分割,这里是以/进行分割字符,如果有的话。
    若是多分割,可以采用数组形式-F'[,/]'

在这里插入图片描述

扩展二 设置定时任务

使用crontab

crontab -e进入定时任务的编写

在其中的下面已经给出提示,时间顺序是分钟(m) 、小时(h)、天(dom)、月(m)、星期(dow)、命令(command)

crontab -l查看当前定时任务

这里是把网卡ethn系列的IP信息输出到文本中

在这里插入图片描述

使用at

at命令一般可能没安装,需要先进行安装

at命令比较灵活,可以使用now + 2 minutes -f [脚本]表示现在开始两分钟后执行脚本,还可以设置

at 12:00 tommory表示明天12点执行

at 8am+3 days表示三天后的早上8点执行

等等

还可以与EOF联合使用,EOF算是标识符,可以使得命令不止一行,甚至可以在里面执行多条命令,开头EOF,结尾EOF中间就是前面命令执行的,所以好用,推荐

在这里插入图片描述

扩展三 无限重启

首先了解重启的命令,在linux系统中,两个命令可以重启计算机

  1. reboot
  2. init 6

知道重启命令后,就可以直接在一个脚本中编写,使得重启

在这里插入图片描述

其次,需要知道自启动目录在哪,或者文件在哪

可以试想一下,平常在启动某项服务的时候,使用的systemctl命令,以及这个命令可以实现服务的开机启动。不过就是需要高权限才能使用该命令。

那么该命令是通过哪些文件来让这些服务启动的呢

/etc/systemd/system/目录,这个目录是系统服务单元文件的存放位置。所以可以在这个文件中编写。

可以查看这个目录下的文件

在这里插入图片描述

基本上是以.service为结尾,这是一种服务,查看文件

在这里插入图片描述

以下面简单的框架描述

[Unit]
Description=IP Script Service
After=network.target[Service]
ExecStart=/bin/bash /home/kali/test/ip.sh
Type=oneshot[Install]
WantedBy=multi - user.target

[Unit]部分

  • Description:这是对服务的一个简单描述,用于在查看服务信息时能够识别服务的用途。
  • After:指定在哪个系统目标(target)之后启动这个服务。在这里,network.target表示在网络相关的服务启动之后再启动这个服务,因为你的脚本可能依赖于网络连接(例如获取 IP 地址相关的操作)。

[Service]部分

  • ExecStart:定义了服务启动时要执行的命令,这里是执行/bin/bash /home/kali/test/ip.sh脚本。
  • Typeoneshot表示这个服务只执行一次,执行完后就结束。这适用于像脚本这种只需要运行一次的情况,而不是像守护进程那样一直运行。

[Install]部分

  • WantedBy:指定这个服务应该被哪个系统目标所依赖。multi - user.target是一个常见的目标,它表示在多用户模式下启动这个服务。

/etc/systemd/system目录下创建一个re.service文件,并编写内容

[Unit]
Description=reboot[Service]
ExecStart=/bin/bash /home/kali/test/re.sh
Type=oneshot[Install]
WantedBy=multi-user.target

然后使用systemctl enable [服务名]来使得服务开机自启动

在这里插入图片描述

这时候输入systemctl start re.service会直接进行重启

这时候计算机到这个界面就会重启,根本到不了登录界面

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com