文件夹内脚本生成列表


avatar
铭心 2021-07-30 2.66k

 

由于个人需要,于是写了一个把文件夹下的所有脚本生成一个列表的脚本,目的是可以把所有的脚本整合为一个列表供其他人查看并选择有需要的脚本进行下载运行。详细的使用方法可以参看下面的说明。

clist.sh 脚本使用说明:(建议设置定期执行)

目录结构:

clist.sh
script
 ┣ a.sh
 ┣ b.sh
 ┣ c.sh
 ┗ e.sh

脚本信息头需要包含如下信息:

###name: 测试脚本        此脚本的作用名称,简洁明了告诉用户这个是干啥的;
###info: 此脚本是一个测试脚本        脚本信息,比如说此脚本是做什么用的,不建议文字描述过多;
###filename: a.sh     脚本文件本身名称,用于生成菜单使用,不建议脚本名称为中文;

clist.sh 源代码

#!/bin/bash
# 需要生成列表的文件需要包含如下信息头
# ###name: 测试 脚本名字
# ###info: 此为测试脚本 脚本说明
# ###filename: test.sh 此脚本的全名

# 需要生成列表文件的格式 例: *.sh 则是为 script 下的所有 sh 文件生成列表
re=*.sh
# 末尾必须加"/"
# clist.sh 所在的路径 例: https://test.mxin.co/shell/ 则是 clist.sh 脚本文件在 shell 目录下
url=https://file.mxin.co/shell/

c=0
for file in script/$re
do
    filelist[$c]="$file"
    ((c++))
done

rm -rf list.sh
echo -e "clear" >> list.sh
echo -e "echo -e \"\t\t\t综合脚本下载 by mxin.co\"" >> list.sh
echo -e "echo ======================================================================" >> list.sh
for ((i=0; i<$c; i++)) do name=`cat ${filelist[$i]} | grep \###name` name=${name##*:} info=`cat ${filelist[$i]} | grep \###info` info=${info##*:} filename=`cat ${filelist[$i]} | grep \###filename` filename=${filename##*:} menu_info[$i]="echo $i.$name $info $filename" echo ${menu_info[$i]} >> list.sh
    echo ${menu_info[$i]}
done
echo -e "echo ======================================================================" >> list.sh
echo -e 'read -p "请输入要使用的脚本编号:" num' >> list.sh
echo -e 'case "$num" in' >> list.sh
for ((i=0; i<$c; i++)) do echo -e "\t$i)" >> list.sh
    echo -e "\twget $url${filelist[$i]}" >> list.sh
    new=${filelist[$i]}
    new=${new##*/}
    echo -e "\tchmod +x $new" >> list.sh
    echo -e "\tbash $new" >> list.sh
    echo -e "\t;;" >> list.sh
done
echo -e "esac" >> list.sh

示例使用方法:(以本人目前有脚本为例)

#!/bin/bash
###name: 域名延时测试
###info: 返回给定域名列表最小延时域名
###filename: k_domain.sh
# Server域名或IP地址,中括号一个数字代表一个域名,递增方式;
# 例:server[0]="www.baidu.com"    server[1]="www.mxin.moe"
server[0]="www.baidu.com"
server[1]="www.mxin.moe"
server[2]="www.qq.com"
server[3]="www.sina.com"

source /etc/os-release
case $ID in
    debian|ubuntu)
        sudo apt -y install bc > /dev/null 2>&1
    ;;
    centos)
        sudo yum -y install bc > /dev/null 2>&1
    ;;
    *)
        echo '此脚本不支持此操作系统'
        exit
    ;;
esac

i=0
while(($i<${#server[*]}))
do
    ii=0
    while(($ii<4))
    do
        r[$ii]=`ping ${server[0]} -c 1 -W 2 | awk '{print $8}' | awk -F= '{print $2}'`
        let ii++
    done
    result[$i]=`echo "scale=2; ("${r[0]} + ${r[1]} + ${r[2]} + ${r[3]}") / 4" | bc`
    result[$i]=${result[$i]}_${server[$i]}
    let i++
done
new=`echo ${result[*]} | tr ' ' '\n' | sort -n`
new=`echo ${new[*]} | awk '{print $1}' | awk -F_ '{print $2}'`
echo $new #此变量为返回的最快域名

生成的 list.sh 代码:

#!/bin/bash
clear
echo -e "            综合脚本下载 by mxin.co"
echo ======================================================================
echo 0. 饥荒开服脚本         饥荒linux系统服务器开服脚本         dst_server.sh
echo 1. 域名延时测试         返回给定域名列表最小延时域名         k_domain.sh
echo 2. SSR内核更换         更换SSR加速内核                 kernel.sh
echo 3. 科学上网             科学上网搭建脚本               shadowsocks.sh
echo 4. SSR动态IP更新         更新远程SSR入流量规则,防止被封。 ss_updata.sh
echo ======================================================================
read -p "请输入要使用的脚本编号:" num
case "$num" in
    0)
        wget https://file.mxin.co/shell/script/dst_server.sh
        chmod +x dst_server.sh
        bash dst_server.sh
        ;;
    1)
        wget https://file.mxin.co/shell/script/k_domain.sh
        chmod +x k_domain.sh
        bash k_domain.sh
        ;;
    2)
        wget https://file.mxin.co/shell/script/kernel.sh
        chmod +x kernel.sh
        bash kernel.sh
        ;;
    3)
        wget https://file.mxin.co/shell/script/shadowsocks.sh
        chmod +x shadowsocks.sh
        bash shadowsocks.sh
        ;;
    4)
        wget https://file.mxin.co/shell/script/ss_updata.sh
        chmod +x ss_updata.sh
        bash ss_updata.sh
        ;;
esac

list.sh 脚本运行结果展示:

暂无评论

发表评论
OωO表情