首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SHELL脚本实现代码美化

前言

作为一名搬砖长期工,已经患上代码强迫症,每当看到代码缩进不一致的情况,情不自禁地会手动进行缩进(可以利用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

关注一下又不会怀孕!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180504G0ZFZN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券