我正在寻找类似indent但类似于(bash)脚本的东西。仅限控制台,无着色等。
你知道吗?答案 0 :(得分:5)
Vim可以缩进bash脚本。但是在缩进之前不要重新格式化它们
备份您的bash脚本,使用vim打开它,键入gg=GZZ
并缩进将更正。 (注意不耐烦:这会覆盖文件,所以一定要做备份!)
虽然,<<
的一些错误(期望EOF作为一行中的第一个字符)例如
编辑:ZZ不是ZQ
答案 1 :(得分:2)
派对有点晚了,但看起来shfmt可以帮你解决问题。
答案 2 :(得分:1)
在bash中我这样做:
reindent() {
source <(echo "Zibri () {";cat "$1"; echo "}")
declare -f Zibri|head --lines=-1|tail --lines=+3 | sed -e "s/^\s\s\s\s//"
}
这消除了评论并重新编写了剧本“bash方式”。
如果您的脚本中有HEREDOCS,则它们会被上一个函数中的sed破坏。
所以使用:
reindent() {
source <(echo "Zibri () {";cat "$1"; echo "}")
declare -f Zibri|head --lines=-1|tail --lines=+3"
}
但是你的所有脚本都有4个空格缩进。
答案 3 :(得分:0)
shfmt效果很好。
您可以设置bash脚本的格式,还可以通过预提交的钩子检查格式。
# reformat
shfmt -l -w script.sh
# check if the formatting is OK
shfmt -d script.sh
# works on the whole directory as well
shfmt -l -w .
唯一缺少的选项是它不会根据行长(yet)重新格式化。
由于它是用go编写的,因此您可以下载大多数平台的二进制文件,例如特拉维斯(.travis.yml
):
install:
- curl -LsS -o ~/shfmt https://github.com/mvdan/sh/releases/download/v3.1.2/shfmt_v3.1.2_linux_amd64
- chmod +x ~/shfmt
script:
- ~/shfmt -d .
npm上还有一个交叉编译的js版本和许多编辑器插件(请参见related projects)
答案 4 :(得分:0)
bash5 +具有--pretty-print选项。.尽管它将删除注释,包括第一行'#!/ bin ...'
答案 5 :(得分:-1)
找到此http://www.linux-kheops.com/doc/perl/perl-aubert/fmt.script。
非常好,我拿出的只有一件事是[...] - &gt;测试替代。