SHELL脚本实现代码美化

Posted 和涛哥一起学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SHELL脚本实现代码美化相关的知识,希望对你有一定的参考价值。

前言

作为一名搬砖长期工,已经患上代码强迫症,每当看到代码缩进不一致的情况,情不自禁地会手动进行缩进(可以利用UE编辑器有效的将TAB键修改为2个空格键,以保持跨平台的缩进一致问题),基于这种现象,爱写脚本的我编写了一个简易可使用的SHELL脚本实现代码美化。

实现效果


1、 '{' 后面的代码增加缩进,直到与之匹配的'}'为止;

2、 '{' 后面的代码增加缩进,直到与之匹配的'}'为止;

3、 ' " ' 双引号里的内容不参与缩进处理,包括'}'和'{' ;

4、美化前后对比:



实现算法

1、脚本有一个参数,文件名称全路径

2、脚本通过逐行逐字(注意为了支持中文,需要逐字而不是逐字符)读取,具体代码如下:

##逐行读取

cat ${g_FILE}|while read -r "buf"

do

 g_ROW_LAST=""

 ##逐字读取

 while [ ${#buf} -gt 0 ]  ##此处是变量的运算符

 do

   ch=$(echo "${buf}"|cut -b 1-1) ## -b 参数完美支持中文

   ##格式化

   func_Fmt "${ch}"

   buf="${buf#"$ch"}"   ##此处是变量的运算符

 done

 echo "${g_ROW_LAST}"   ##此处按行输出

done

3、格式化中的算法如下(此处用了全局变量g_FMT_SPACE、g_FMT_FLAG进行临时存储)

#格式化流程

#func_Fmt ${ch}

func_Fmt()

{

  local ch="${1}"

  case "${1}" in

    "{") #'{'先输出 再增加缩进

        func_echo; func_UptSpace_Row "ADD";

      ;;

    "}") #'}'先减少缩进 再输出

        func_UptSpace_Row "DEL"; func_echo;

      ;;

    "\"") #'"'双引号里的内容不需要缩进处理

        if [ ${g_FMT_FLAG} -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


关注一下又不会怀孕!



以上是关于SHELL脚本实现代码美化的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本实现git快速提交代码与快速回滚

lua代码暴力混淆--shell脚本

dotnet项目执行shell脚本实现简单的自动化部署

Shell脚本中怎么实现用户切换实现操作

shell进度条怎么显示脚本执行进度

shell编程