Linux Shell 实践

shell脚本

注意事项:

  • shell 开头必备 #!/bin/bash
  • 命名-规则
    • 变量名大写
    • 局部变量小写
    • 函数名小写
    • 名字体现出实际作用

脚本1:获取简易IP地址

IP=`ifconfig enp0s3 |head -2|tail -1|awk '{print $2}'`
ZW=`ifconfig enp0s3 |head -2|tail -1|awk '{print $4}'`
GW=` route -n|tail -1|awk '{print $2}'`
HN=`hostname`
DNS=`cat /etc/resolv.conf  |grep nameserver | awk '{print $2}'`
echo "IP=$IP"
echo "ZW=$ZW"
echo "GetWay=$ZW"
echo "hostname=$HN"
echo "DNS=$DNS"

输出:

image-20221109151937333

补充:

awk命令

linux命令中文本处理三剑客之一

默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段:

  • $0 代表整个文本行;
  • $1 代表文本行中的第 1 个数据字段;
  • $2 代表文本行中的第 2 个数据字段;
  • $n 代表文本行中的第 n 个数据字段。
  • 可在awk 命令后加参数-F '指定要分隔的字符'

脚本2:扫描同一网段的所有IP地址


#!/bin/bash
a=1
IP=`ifconfig enp0s3 |head -2|tail -1|awk '{print $2}'`
IP1=`ifconfig enp0s3 |head -2|tail -1|awk '{print $2}'|awk -F '.' '{print $1}'`
IP2=`ifconfig enp0s3 |head -2|tail -1|awk '{print $2}'|awk -F '.' '{print $2}'`
IP3=`ifconfig enp0s3 |head -2|tail -1|awk '{print $2}'|awk -F '.' '{print $3}'`
echo "$IP"


while [ $a -lt 255 ]
do
S=`ping -c 1 $IP1.$IP2.$IP3.$a |grep "received"|awk '{print $4}'`
if [ $S -eq 1 ]
then
echo "$IP1.$IP2.$IP3.$a"
fi


a=$(($a+1))
done

是则输出

image-20221109161102368

脚本三:猜数字Game

num=$[RANDOM%100+1]

T=0
while [ $T -lt 11 ]
do
echo "input:"
read -a N
if [ $N -eq $num ]
then
echo "yes"
elif [ $N -ne $num ]
then
echo "no"
fi
T=$(($T+1))
done

实际效果:

image-20221109162417127

posted @ 2022-11-09 19:27  ~内个臣呐~  阅读(70)  评论(0)    收藏  举报