零基础学安全--shell练习

目录

用shell写一个计算器

测试​

一些小问题

n阶乘数

测试

拓展

写⼀个Shell脚本去筛选出eth0⽹卡的ipv4地址,并赋值⼀个变量输出

测试

无限重启


用shell写一个计算器

bash 复制代码
read -p "请输入数字a: " number1
read -p "请输入操作符(+、-、*、/): " op
read -p "请输入数字b: " number2

if [ "$op" = "+" ]; then
    result=$(expr $number1 + $number2)
    echo "结果是: $result"
elif [ "$op" = "-" ]; then
    result=$(expr $number1 - $number2)
    echo "结果是: $result"
elif [ "$op" = "*" ]; then
    result=$(expr $number1 * $number2)
    echo "结果是: $result"
elif [ "$op" = "/" ]; then
    # 检查除数是否为零
    if [ "$number2" -eq 0 ]; then
        echo "错误:不能除以零。"
    else
        result=$(expr $number1 / $number2)
        echo "结果是: $result"
    fi
else
    echo "请输入正确的操作符(+、-、*、/)。"
fi

测试

一些小问题

在Shell脚本中,反引号 command$() 都是用来执行命令并将输出替换到当前位置的方法。但是现在多用(),因为这个东西可读性更高一些。而且()支持嵌套不需要额外的转义。但是``现在还是可以使用的,这个东西的可以用来绕过一些对于输入长度的限制。

在shell脚本中字符串的比较通常使用[]和正常运算符=,而数字比较使用的是[]搭配-eq等选项,或者用(())算数扩展,直接进行比较,当然算数扩展也可以直接对数字进行计算,上述脚本中可以不用expr,而使用(())

整数比较数字

bash 复制代码
if [ "$num1" -eq "$num2" ]; then
    echo "整数相等"
else
    echo "整数不相等"
f

算数扩展比较数字

bash 复制代码
#算数扩展比较
if (( num1 == num2 )); then
    echo "整数相等"
else
    echo "整数不相等"
fi
 
# 或者使用其他算术比较
if (( num1 < num2 )); then
    echo "num1小于num2"
fi

n阶乘数

bash 复制代码
#用来确定是多少的阶乘
read -p "请输入数字:" n
a=1
i=1
#如果输入的是0的话就直接输出0,0的阶乘就是0
if (( "$n" == 0 )); then
    echo 0
    exit 0
fi
#用来循环相乘求阶乘
while (( "$a" <= "$n" )); 
do
	i=$((i*a))
	((a++))
done
echo "$i"

测试

拓展

写⼀个Shell脚本去筛选出eth0⽹卡的ipv4地址,并赋值⼀个变量输出

bash 复制代码
ip=$( ip a | grep -w inet | grep -w eth0 | awk '{print $2}')
echo $ip

ip a | grep -w inet | grep -w eth0 | awk '{print $2}'

首先解释一下上面这条命令

ip a显示你的网卡信息

grep -w inet匹配存在单词inet这一行

grep -w eh0匹配存在eh0这一行

awk '{print $2}' 这里是匹配以空格为分隔符的第二行

测试

无限重启

在任务计划中写入,计划任务在/etc/crontab这个文件中编辑,然后在文件中写入这么一句话

bash 复制代码
* * * * * root $(reboot)

代码解释

* * * * * 这几个*依次代表 分 时 日 月 周,* 的意思就是任意时间,这里的意思就是每分每小时每日每月每周,而上面代码的意思是每分每小时每日每月每周都会以root的身份执行reboot

经过测试可行

相关推荐
珠海西格电力科技6 分钟前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
A星空12319 分钟前
一、Linux嵌入式的I2C驱动开发
linux·c++·驱动开发·i2c
释怀不想释怀24 分钟前
Linux环境变量
linux·运维·服务器
zzzsde30 分钟前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
凡人叶枫41 分钟前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
yuanmenghao1 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
qq_297574671 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
70asunflower2 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
聆风吟º2 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
神梦流2 小时前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库