零基础学安全--shell练习

打印 上一主题 下一主题

主题 969|帖子 969|积分 2907

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
用shell写一个计算器
测试​
一些小题目
n阶乘数
测试 
拓展 
写⼀个Shell脚本去筛选出eth0⽹卡的ipv4所在,并赋值⼀个变量输出
测试
无穷重启 


用shell写一个计算器

  1. read -p "请输入数字a: " number1
  2. read -p "请输入操作符(+、-、*、/): " op
  3. read -p "请输入数字b: " number2
  4. if [ "$op" = "+" ]; then
  5.     result=$(expr $number1 + $number2)
  6.     echo "结果是: $result"
  7. elif [ "$op" = "-" ]; then
  8.     result=$(expr $number1 - $number2)
  9.     echo "结果是: $result"
  10. elif [ "$op" = "*" ]; then
  11.     result=$(expr $number1 * $number2)
  12.     echo "结果是: $result"
  13. elif [ "$op" = "/" ]; then
  14.     # 检查除数是否为零
  15.     if [ "$number2" -eq 0 ]; then
  16.         echo "错误:不能除以零。"
  17.     else
  18.         result=$(expr $number1 / $number2)
  19.         echo "结果是: $result"
  20.     fi
  21. else
  22.     echo "请输入正确的操作符(+、-、*、/)。"
  23. fi
复制代码
测试





一些小题目

在Shell脚本中,反引号 `command` 和 $() 都是用来执行下令并将输出更换到当前位置的方法。但是如今多用$(),因为这个东西可读性更高一些。而且$()支持嵌套不需要额外的转义。但是``如今还是可以使用的,这个东西的可以用来绕过一些对于输入长度的限制。
在shell脚本中字符串的比力通常使用[]和正常运算符=,而数字比力使用的是[]搭配-eq等选项,或者用(())算数扩展,直接进行比力,当然算数扩展也可以直接对数字进行计算,上述脚本中可以不用expr,而使用(())
整数比力数字
  1. if [ "$num1" -eq "$num2" ]; then
  2.     echo "整数相等"
  3. else
  4.     echo "整数不相等"
  5. f
复制代码
算数扩展比力数字
  1. #算数扩展比较
  2. if (( num1 == num2 )); then
  3.     echo "整数相等"
  4. else
  5.     echo "整数不相等"
  6. fi
  7. # 或者使用其他算术比较
  8. if (( num1 < num2 )); then
  9.     echo "num1小于num2"
  10. fi
复制代码
n阶乘数

  1. #用来确定是多少的阶乘
  2. read -p "请输入数字:" n
  3. a=1
  4. i=1
  5. #如果输入的是0的话就直接输出0,0的阶乘就是0
  6. if (( "$n" == 0 )); then
  7.     echo 0
  8.     exit 0
  9. fi
  10. #用来循环相乘求阶乘
  11. while (( "$a" <= "$n" ));
  12. do
  13.         i=$((i*a))
  14.         ((a++))
  15. done
  16. echo "$i"
复制代码
测试 


拓展 

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

  1. ip=$( ip a | grep -w inet | grep -w eth0 | awk '{print $2}')
  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这个文件中编辑,然后在文件中写入这么一句话
  1. * * * * * root $(reboot)
复制代码
代码解释
* * * * * 这几个*依次代表 分 时 日 月 周,* 的意思就是任意时间,这里的意思就是每分每小时每日每月每周,而上面代码的意思是每分每小时每日每月每周都会以root的身份执行reboot
经过测试可行

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表