什么是shfmt?
安装shfmt
linuxmi@linuxmi:~/www.linuxmi.com$ sudo snap install shfmt

sudo dnf install snapdsudo snap install snap-storesudo snap install shfmt
使用 shfmt
linuxmi@linuxmi:~/www.linuxmi.com$ shfmt --help

linuxmi.com.sh如下图所示。
func最后一行的函数调用后面跟着括号。Bash 中的函数调用(而不是函数定义)应该只有名称,而不是括号。
shfmt对此有何看法。
linuxmi@linuxmi:~/www.linuxmi.com$ shfmt linuxmi.sh

foo(此处使用)和
bar(现在此处未使用)经常在 IT 圈子中用于indicate/represent 任何类似的习语或元素。
foo这里真的是指
func。
shmft在这里寻找类似
func(){ some_command[s]; }的东西。
shfmt作为 shell 脚本验证/检查器工具的功能,非常方便!
linuxmi.sh如下图所示。
shfmt并收到更合适且格式正确的输出:

shfmt我们希望使用两个空格的缩进/制表符宽度而不是完整的制表符。我总是使用两个空格作为缩进/制表符宽度来编写代码,并在下一行的命令与前一行密切相关的地方使用额外的空格,比如一个连续的命令等等,尽管这种情况并不经常发生。多年来,我发现这两个空间是个人和共享项目的理想选择。
shfmt上面示例中呈现的格式那样的大制表符(8 个空格),您的代码可能会变得更难阅读。

-i选项将缩进/制表符宽度设置为两个空格(
--help定义为缩进:0 表示制表符(默认),>0 表示空格数):
shfmt -i 2 linuxmi.sh这将上图中的脚本呈现如下图。
shfmt并没有检测到:
#!/bin/bash__是不正确,应该使用
#!/bin/bash代替。

shfmt更好地格式化脚本之外,还有使用shellcheck来查找脚本错误的用例。(见:https://www.linuxmi.com/shellcheck-bugs-linux-shell.html)。然而,有趣的是,在这种特殊情况下,甚至
shellcheck没有注意到这个问题。这个缺陷已报告给 shellcheck 团队,因此可能会在适当的时候得到修复。
总结
shfmt这样的shell 格式化工具(如
shellcheck)这样的bug/错误检查器时,编写干净、格式良好、没有bug的脚本就变得很容易了。正如我们所看到的,有些事情可能直到第一次运行脚本时才被注意到。
shfmt是一个小而有效的工具,它将帮助您根据您选择的缩进格式化您的脚本和代码。
链接:https://www.linuxmi.com/shfmt-format-shell.html
文章转载自波哥的IT人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




