Linux shell 编程篇

lance 2020-03-02 PM 272℃ 0条

1: 描述 Linux shell 中单引号、双引号及不加引号的简单区别

单引号:所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就输出什么。

双引号:把双引号里面的内容给输出出来,如果内容中有命令、变量等,会先把,变来那个、命令解析出结果,然后输出最终内容。

无引号:把内容输出出来,可能不会键含有空格的字符串,视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出来,然后输出最终内容,如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引号。一般连续的字符串,数字,路径等可以用,不过最好用双引号,替代之。

2: 写一个脚本将某目录下大于 100k 的文件移动至 /tmp 下

for i in `find /data/test -type f -size +100k`
do 
    cd /data/test && mv $i /tmp
done

3: 写一个脚本进行 nginx 日志统计,得到访问 ip 最多的前 10 个(nginx 日志路径:/home/logs/nginx/default/access.log

awk '{a[$1]++}END{for (j in a) print a[j],j}' /home/logs/nginx/default/access.log | sort -nr | head -10

4: 写一个脚本把指定文件里的 /usr/local 替换为别的目录

sed 's:/user/local:/tmp:g' filename

5: 写一个脚本,实现批量添加 20 个用户,用户名为 user01-20,密码为 user 后面跟 5 个随机字符

#!/bin/bash
#description: useradd
for i in `seq -f"%02g" 1 20`
#-f"%02g" 可以实现输出 01-20
do
    useradd user$i
    echo "user$i-`echo $RANDOM | md5sum | cut -c 1-5`" | passwd -stdinuser$i > /dev/null 2>&1
done

6: 写一个脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些,能 ping 通则认为在线

#!/bin/bash
for ip in `seq 1 255`
do
    ping ‐c 1 10.18.193.$ip > /dev/null 2>&1
    if [ $? -eq 0 ]
    then
        echo 10.18.193.$ip UP
    else
        echo 10.18.193.$ip DOWN
    fi
done
wait

7: 写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入 Q 或者 q 无视错误并退出或者通过 vim 打开这个指定的脚本或者输入其他任意键退出检测,假如没错误则输出没错误的信息

#!/bin/bash
read -p "请指定要检测的脚本 ‐> " file
if [ -f $file ]
then
    sh -n $file > /dev/null 2>&1
    if [ $? -ne 0 ]
    then
        read ‐p "你检测的 $file 有语法错误,[选择 q 或 Q 退出检测,或者输入 vim 进行脚本的修改]" answer
        case $answer in
            q | Q )
                exit 0
                ;;
            vim )
                vim $file
                ;;
            * )
                exit 0
                ;;
        esac
    else
        echo "经检测,此脚本在语法上没问题!"
    fi
else
    echo "$file 不存在,无法检测!"
    exit 1
fi

8: 写脚本将当前目录所有文件扩展名改为 log

#!/bin/bash
for file in `ls ./ | grep -P "(.*)(\..*)"`
do
    echo $file | mv $file `echo ${file%.**}`.log
done

标签: linux, shell, 运维宝典

非特殊说明,本博所有文章均为博主原创。

觉得文章不错,打赏一点吧,1分也是爱😀

WeChat Pay

微信打赏

Alipay

支付宝打赏

评论啦~