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