前言
作为一名搬砖长期工,已经患上代码强迫症,每当看到代码缩进不一致的情况,情不自禁地会手动进行缩进(可以利用UE编辑器有效的将TAB键修改为2个空格键,以保持跨平台的缩进一致问题),基于这种现象,爱写脚本的我编写了一个简易可使用的SHELL脚本实现代码美化。
实现效果
1、 '{' 后面的代码增加缩进,直到与之匹配的'}'为止;
2、 '{' 后面的代码增加缩进,直到与之匹配的'}'为止;
3、 ' " ' 双引号里的内容不参与缩进处理,包括'}'和'{' ;
4、美化前后对比:
实现算法
1、脚本有一个参数,文件名称全路径;
2、脚本通过逐行逐字(注意为了支持中文,需要逐字而不是逐字符)读取,具体代码如下:
##逐行读取
cat $|while read -r "buf"
do
g_ROW_LAST=""
##逐字读取
while [ ${#buf} -gt 0 ] ##此处是变量的运算符
do
ch=$(echo "$"|cut -b 1-1) ## -b 参数完美支持中文
##格式化
func_Fmt "$"
buf="$" ##此处是变量的运算符
done
echo "$" ##此处按行输出
done
3、格式化中的算法如下(此处用了全局变量g_FMT_SPACE、g_FMT_FLAG进行临时存储)
#格式化流程
#func_Fmt $
func_Fmt()
{
local ch="$"
case "$" in
"{") #'{'先输出 再增加缩进
func_echo; func_UptSpace_Row "ADD";
;;
"}") #'}'先减少缩进 再输出
func_UptSpace_Row "DEL"; func_echo;
;;
"\"") #'"'双引号里的内容不需要缩进处理
if [ $ -eq 1 ]
then g_FMT_FLAG=0;
else g_FMT_FLAG=1;
fi
func_echo;
;;
*)
func_echo;
;;
esac
}
代码下载方式
链接: https://pan.baidu.com/s/154YNCxmLvrJknpRYeHEkYw
密码: wfvi
关注一下又不会怀孕!
领取专属 10元无门槛券
私享最新 技术干货