成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

格式化 Shell 腳本利器,輕松理解復雜代碼

系統 Linux
格式化腳本很有必要,可以極大地有助于理解復雜的代碼。然而,對于那些經常編寫 shell 腳本的人來說,重復檢查格式可能會成為一項乏味的任務。本文將向您展示如何使用 shfmt 來簡化工作!

什么是shfmt?

shfmt 由 Dustin Krysak 開發,是一個 Shell 格式化程序、解析器和解釋器。該項目本身托管在 GitHub 上,并有一個清晰的 README 和清晰的存儲庫。該工具是用 Go 開發的,支持 POSIX、Bash 和 mksh shell。這使得 shfmt 成為一個真正通用的程序,而不是僅限于 Bash。

安裝shfmt

要在支持 snap 的 Linux 發行版(如 Ubuntu 和 Mint)上安裝shfmt,請在終端中執行以下命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo snap install shfmt

要在基于 RedHat/Yum 的 Linux 發行版(如 RHEL、Centos 和 Fedora)上安裝shfmt,請在終端中執行以下命令:

注意:在執行第一個命令后和執行下一個命令之前,您必須重新啟動計算機(或注銷并重新登錄)。

sudo dnf install snapd
sudo snap install snap-store
sudo snap install shfmt

在 RHEL 和 Centos 上,您可能還必須先安裝EPEL 存儲庫。

使用 shfmt

安裝 snap 包后,您可以開始使用 shfmt。

linuxmi@linuxmi:~/www.linuxmi.com$ shfmt --help

讓我們先定義一個非常糟糕的格式和編寫的腳本,linuxmi.com.sh如下圖所示。

這個腳本有幾個問題,最突出的是它的格式。但是腳本中也有一個error/bug: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是一個小而有效的工具,它將幫助您根據您選擇的縮進格式化您的腳本和代碼。

好好享受吧。

責任編輯:龐桂玉 來源: Linux公社
相關推薦

2015-08-10 14:42:40

Explain SheShell 命令

2012-05-16 09:14:11

代碼美化代碼工具Java

2015-01-07 15:21:30

Android Stu代碼格式化

2010-07-29 11:03:53

Flex代碼格式化

2023-12-05 18:04:58

PyCharmPython

2009-02-26 16:56:07

虛擬化ITVMware

2012-04-26 14:02:58

ibmdw

2010-08-03 10:46:41

Flex代碼格式化

2022-03-10 10:24:45

Vim代碼Linux

2009-09-04 13:19:59

C#代碼格式化

2020-11-03 10:21:33

MySQL

2014-08-20 10:13:33

虛擬化

2010-07-08 16:21:46

Sql Server

2010-08-02 16:25:03

ibmdwJDT

2009-08-03 14:25:59

C#日期格式化

2023-11-01 13:37:38

Golang代碼

2024-04-11 13:51:47

markdown前端

2024-01-08 22:03:22

python代碼開發

2022-05-09 08:17:37

InstantJava字符

2012-03-22 09:15:29

開發代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人的天堂视频网站 | 最新中文在线视频 | 91精品成人久久 | 欧美自拍一区 | 亚洲大片在线观看 | 亚洲成人一区二区 | 四虎影院免费在线播放 | 奇米影视在线 | 国产在线精品免费 | 国产高清区 | 91精品在线播放 | 亚洲一区二区三区免费视频 | 99久久免费观看 | 成人精品国产 | 成人在线不卡 | 久久亚洲国产 | 久久精品亚洲 | www国产成人免费观看视频 | 日韩精品专区在线影院重磅 | 国产一区二区三区久久久久久久久 | 亚洲一二三在线 | 久久精品视频网站 | av网站免费在线观看 | 日韩在线不卡视频 | 欧美日韩一区二区在线 | 天天看天天操 | a级在线免费视频 | 精品自拍视频 | 天天看天天操 | 亚洲精彩视频在线观看 | 亚洲一区二区在线视频 | 伊人久久国产 | 国产成人在线视频免费观看 | 特级黄一级播放 | 国产亚洲欧美在线 | 免费国产视频 | 婷婷一级片 | 国产电影一区二区三区爱妃记 | 亚洲欧洲一区二区 | 国产精品久久精品 | 午夜精品久久久久久久99黑人 |