• Home
  • Hosting
  • Tech
  • Server
  • Security
Mex Linux
  • Home
  • Hosting
  • Tech
  • Server
  • Security
No Result
View All Result
mexlinux.com
  • Home
  • Hosting
  • Tech
  • Server
  • Security
No Result
View All Result
mexlinux.com
No Result
View All Result

Improve your bash/sh shell script with ShellCheck lint script analysis tool

admin by admin
November 9, 2020
Home Latest
Share on FacebookShare on Twitter

 

ShellCheck is a static evaluation device for shell scripts. One can use it to finds bugs in your shell scripts. It’s written in Haskell. You will discover warnings and recommendations for bash/sh shell scripts with this device. Allow us to see set up and use ShellCheck on a Linux or Unix-like system to boost your shell scripts, keep away from errors and productiveness.

Shell scripting is enjoyable. It’s helpful to create good (maybe ugly) issues in shell scripting. Shell scripts are helpful for automating processes that you just repeat on the immediate.
Improve your bash/sh shell script with ShellCheck lint script analysis tool

ADVERTISEMENTS

ShellCheck lint script evaluation device

The standard of the shell script could be harmful. Most new customers, sysadmins and builders will use StackOverflow, Google, Q & A web site about Linux/Unix for copy and pasting code. It may result in plenty of unhealthy code and errors. For instance, catastrophic rm command as VAR not outlined in any respect:
rm -rf “$VAR/*”
You’ll be able to repair many such issues whereas writing shell scripts utilizing a linting device resembling shellcheck. Allow us to keep protected and carry out shell script evaluation with ShellCheck device.

Putting in ShellCheck

The best method to set up ShellCheck domestically is thru your bundle managers resembling apt/apt-get/yum and pals as per your Linux distro or Unix variant. Run instructions as per your distro.

Set up ShellCheck on a Debian/Ubuntu Linux

Kind the next apt command/apt-get command:
$ sudo apt set up shellcheck
Pattern outputs:

[sudo] password for vivek:
Studying bundle lists… Executed
Constructing dependency tree
Studying state info… Executed
The next NEW packages might be put in:
shellcheck
Zero upgraded, 1 newly put in, Zero to take away and Zero not upgraded.
Must get 1,841 kB of archives.
After this operation, 15.5 MB of further disk area might be used.
Get:1 http://in.archive.ubuntu.com/ubuntu suave/universe amd64 shellcheck amd64 0.4.6-1 [1,841 kB]
Fetched 1,841 kB in 42s (43.Four kB/s)
Deciding on beforehand unselected bundle shellcheck.
(Studying database … 196100 recordsdata and directories at the moment put in.)
Making ready to unpack …/shellcheck_0.4.6-1_amd64.deb …
Unpacking shellcheck (0.4.6-1) …
Establishing shellcheck (0.4.6-1) …
Processing triggers for man-db (2.7.6.1-2) …

[sudo] password for vivek:
Studying bundle lists… Executed
Constructing dependency tree
Studying state info… Executed
The next NEW packages might be put in:
shellcheck
Zero upgraded, 1 newly put in, Zero to take away and Zero not upgraded.
Must get 1,841 kB of archives.
After this operation, 15.5 MB of further disk area might be used.
Get:1 http://in.archive.ubuntu.com/ubuntu suave/universe amd64 shellcheck amd64 0.4.6-1 [1,841 kB]
Fetched 1,841 kB in 42s (43.Four kB/s)
Deciding on beforehand unselected bundle shellcheck.
(Studying database … 196100 recordsdata and directories at the moment put in.)
Making ready to unpack …/shellcheck_0.4.6-1_amd64.deb …
Unpacking shellcheck (0.4.6-1) …
Establishing shellcheck (0.4.6-1) …
Processing triggers for man-db (2.7.6.1-2) …

Set up ShellCheck on a CentOS/RHEL/Fedora/Oracle Linux

First allow EPEL repo on a CentOS/RHEL:
$ sudo yum -y set up epel-release
Subsequent, sort the next yum command:
$ sudo yum set up ShellCheck
Pattern outputs:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.web
* epel: mirror.nes.co.id
* extras: mirrors.vonline.vn
* updates: centos-hcm.viettelidc.com.vn
Resolving Dependencies
–> Operating transaction test
—> Package deal ShellCheck.x86_64 0:0.3.5-1.el7 might be put in
–> Processing Dependency: ghc(ShellCheck-0.3.5-297097a7f5fa37100847be7f096be51e) for bundle: ShellCheck-0.3.5-1.el7.x86_64
…..
..
…
Dependencies Resolved===============================================================================
Package deal Arch Model Repository Dimension
===============================================================================
Putting in:
ShellCheck x86_64 0.3.5-1.el7 epel 495 ok
Putting in for dependencies:
ghc-ShellCheck x86_64 0.3.5-1.el7 epel 540 ok
ghc-array x86_64 0.4.0.1-26.4.el7 epel 113 ok
ghc-base x86_64 4.6.0.1-26.4.el7 epel 1.6 M
ghc-bytestring x86_64 0.10.0.2-26.4.el7 epel 182 ok
ghc-containers x86_64 0.5.0.0-26.4.el7 epel 287 ok
ghc-deepseq x86_64 1.3.0.1-26.4.el7 epel 45 ok
ghc-directory x86_64 1.2.0.1-26.4.el7 epel 59 ok
ghc-filepath x86_64 1.3.0.1-26.4.el7 epel 60 ok
ghc-json x86_64 0.7-4.el7 epel 96 ok
ghc-mtl x86_64 2.1.2-27.el7 epel 33 ok
ghc-old-locale x86_64 1.0.0.5-26.4.el7 epel 50 ok
ghc-parsec x86_64 3.1.3-31.el7 epel 105 ok
ghc-pretty x86_64 1.1.1.0-26.4.el7 epel 57 ok
ghc-regex-base x86_64 0.93.2-29.el7 epel 28 ok
ghc-regex-compat x86_64 0.95.1-35.el7 epel 15 ok
ghc-regex-posix x86_64 0.95.2-30.el7 epel 47 ok
ghc-syb x86_64 0.4.0-35.el7 epel 39 ok
ghc-text x86_64 0.11.3.1-2.el7 epel 379 ok
ghc-time x86_64 1.4.0.1-26.4.el7 epel 187 ok
ghc-transformers x86_64 0.3.0.0-34.el7 epel 100 ok
ghc-unix x86_64 2.6.0.1-26.4.el7 epel 160 ok

Transaction Abstract
===============================================================================
Set up 1 Package deal (+21 Dependent packages)

Whole obtain measurement: 4.6 M
Put in measurement: 28 M
Is that this okay [y/d/N]: y
Downloading packages:
(1/22): ghc-bytestring-0.10.0.2-26.4.el7.x86_64.rpm | 182 kB 00:09
(2/22): ghc-array-0.4.0.1-26.4.el7.x86_64.rpm | 113 kB 00:09
….
..
…
ghc-parsec.x86_64 0:3.1.3-31.el7
ghc-pretty.x86_64 0:1.1.1.0-26.4.el7
ghc-regex-base.x86_64 0:0.93.2-29.el7
ghc-regex-compat.x86_64 0:0.95.1-35.el7
ghc-regex-posix.x86_64 0:0.95.2-30.el7
ghc-syb.x86_64 0:0.4.0-35.el7
ghc-text.x86_64 0:0.11.3.1-2.el7
ghc-time.x86_64 0:1.4.0.1-26.4.el7
ghc-transformers.x86_64 0:0.3.0.0-34.el7
ghc-unix.x86_64 0:2.6.0.1-26.4.el7

Full!

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.web
* epel: mirror.nes.co.id
* extras: mirrors.vonline.vn
* updates: centos-hcm.viettelidc.com.vn
Resolving Dependencies
–> Operating transaction test
—> Package deal ShellCheck.x86_64 0:0.3.5-1.el7 might be put in
–> Processing Dependency: ghc(ShellCheck-0.3.5-297097a7f5fa37100847be7f096be51e) for bundle: ShellCheck-0.3.5-1.el7.x86_64
…..
..
…
Dependencies Resolved
===============================================================================
Package deal Arch Model Repository Dimension
===============================================================================
Putting in:
ShellCheck x86_64 0.3.5-1.el7 epel 495 ok
Putting in for dependencies:
ghc-ShellCheck x86_64 0.3.5-1.el7 epel 540 ok
ghc-array x86_64 0.4.0.1-26.4.el7 epel 113 ok
ghc-base x86_64 4.6.0.1-26.4.el7 epel 1.6 M
ghc-bytestring x86_64 0.10.0.2-26.4.el7 epel 182 ok
ghc-containers x86_64 0.5.0.0-26.4.el7 epel 287 ok
ghc-deepseq x86_64 1.3.0.1-26.4.el7 epel 45 ok
ghc-directory x86_64 1.2.0.1-26.4.el7 epel 59 ok
ghc-filepath x86_64 1.3.0.1-26.4.el7 epel 60 ok
ghc-json x86_64 0.7-4.el7 epel 96 ok
ghc-mtl x86_64 2.1.2-27.el7 epel 33 ok
ghc-old-locale x86_64 1.0.0.5-26.4.el7 epel 50 ok
ghc-parsec x86_64 3.1.3-31.el7 epel 105 ok
ghc-pretty x86_64 1.1.1.0-26.4.el7 epel 57 ok
ghc-regex-base x86_64 0.93.2-29.el7 epel 28 ok
ghc-regex-compat x86_64 0.95.1-35.el7 epel 15 ok
ghc-regex-posix x86_64 0.95.2-30.el7 epel 47 ok
ghc-syb x86_64 0.4.0-35.el7 epel 39 ok
ghc-text x86_64 0.11.3.1-2.el7 epel 379 ok
ghc-time x86_64 1.4.0.1-26.4.el7 epel 187 ok
ghc-transformers x86_64 0.3.0.0-34.el7 epel 100 ok
ghc-unix x86_64 2.6.0.1-26.4.el7 epel 160 ok
Transaction Abstract
===============================================================================
Set up 1 Package deal (+21 Dependent packages)
Whole obtain measurement: 4.6 M
Put in measurement: 28 M
Is that this okay [y/d/N]: y
Downloading packages:
(1/22): ghc-bytestring-0.10.0.2-26.4.el7.x86_64.rpm | 182 kB 00:09
(2/22): ghc-array-0.4.0.1-26.4.el7.x86_64.rpm | 113 kB 00:09
….
..
…
ghc-parsec.x86_64 0:3.1.3-31.el7
ghc-pretty.x86_64 0:1.1.1.0-26.4.el7
ghc-regex-base.x86_64 0:0.93.2-29.el7
ghc-regex-compat.x86_64 0:0.95.1-35.el7
ghc-regex-posix.x86_64 0:0.95.2-30.el7
ghc-syb.x86_64 0:0.4.0-35.el7
ghc-text.x86_64 0:0.11.3.1-2.el7
ghc-time.x86_64 0:1.4.0.1-26.4.el7
ghc-transformers.x86_64 0:0.3.0.0-34.el7
ghc-unix.x86_64 0:2.6.0.1-26.4.el7
Full!

If you’re utilizing a Fedora Linux, run the next dnf command:
$ sudo dnf set up ShellCheck

Set up ShellCheck on an Arch Linux

Kind the next pacman command:
$ sudo pacman -S shellcheck

Putting in ShellCheck on a Gentoo Linux

Kind the next emerge command:
$ sudo emerge –ask shellcheck

Set up ShellCheck on an OpenSUSE Linux

Run the next zypper command:
$ sudo zypper in ShellCheck

macOS Unix set up ShellCheck

Strive the next port command if you’re utilizing MacPorts:
$ port set up shellcheck
If you happen to use Homebrew on a macOS/OS X, sort the next brew command:
$ brew set up shellcheck

Alpine Linux set up ShellCheck

Execute the apk command:
# apk add shellcheck

Easy methods to use ShellCheck

Allow us to see my pattern shell script with the cat command:
$ cat -n backupme
Pattern outputs:

1 #!/bin/bash
2 t=”/tmp/exclude.$$”
Three supply ~/.backup.conf
4 >$t
5 for w in $WHATNOT
6 do
7 echo $w >> $t
eight performed
9 rsync $OPT -avr –exclude-from=$t $WHAT $SERVER:$WHERE
10 rm -rf $t

1 #!/bin/bash
2 t=”/tmp/exclude.$$”
Three supply ~/.backup.conf
4 >$t
5 for w in $WHATNOT
6 do
7 echo $w >> $t
eight performed
9 rsync $OPT -avr –exclude-from=$t $WHAT $SERVER:$WHERE
10 rm -rf $t

Run shellcheck backupme within the terminal:
$ shellcheck backupme
Pattern outputs:

Improve your bash/sh shell script with ShellCheck lint script analysis tool

Fig.01: ShellCheck in motion (click on to enlarge)

The shellcheck requested me to repair unquoted variables and different points. Right here is my up to date script as per warnings:
$ cat -n backupme
Pattern outputs:

1 #!/bin/bash
2 t=”/tmp/exclude.$$”
Three supply ~/.backup.conf
Four contact $t
5 for w in $WHATNOT
6 do
7 echo “$w” >> $t
eight performed
9 rsync “$OPT” -avr –exclude-from=$t “$WHAT” “$SERVER:$WHERE”
10 rm -rf “$t”

1 #!/bin/bash
2 t=”/tmp/exclude.$$”
Three supply ~/.backup.conf
Four contact $t
5 for w in $WHATNOT
6 do
7 echo “$w” >> $t
eight performed
9 rsync “$OPT” -avr –exclude-from=$t “$WHAT” “$SERVER:$WHERE”
10 rm -rf “$t”

One other session utilizing shellcheck a shell script static evaluation device:

In /house/vivek/bin/faqtoc line 2:
code=””
^—————–^ SC2124: Assigning an array to a string! Assign as array, or use * as a substitute of @ to concatenate.

In /house/vivek/bin/faqtoc line 5:
[ $? -eq 0 ] && xclip -sel clip;
^– SC2181: Test exit code instantly with e.g. ‘if mycmd;’, not not directly with $?.

For extra info:
https://www.shellcheck.web/wiki/SC2124 — Assigning an array to a string! A…
https://www.shellcheck.web/wiki/SC2181 — Test exit code instantly with e.g…

Easy methods to combine shellcheck in your textual content editor

You’ll be able to shellcheck with VIM or emacs textual content editor instantly. I’m utilizing neomake vim plugin. It’s an asynchronous linting and make framework for Neovim/Vim. I put in it utilizing vim-plug plugin supervisor in my ~/.vimrc:
name plug#start(‘~/.vim/plugged’)
Plug ‘pearofducks/ansible-vim’
” set up and use neomake linting
Plug ‘neomake/neomake’
name plug#finish()
To put in ansible-vim and neomake/neomake sort the next command in vim:
:PlugInstall
To make use of plugin sort the next command whereas writing/modifying your bash/sh scripts:
:Neomake
Pattern outputs:

Improve your bash/sh shell script with ShellCheck lint script analysis tool

Fig.02: Neomake displaying warning/errors with shellcheck

Conclusion

Total it is a wonderful little device for enhancing and fixing your shell scripts. It may detect many widespread errors and errors. For more information see github web page.

? Get the newest tutorials on SysAdmin, Linux/Unix, Open Supply & DevOps subjects by way of:

ADVERTISEMENTS

shell script formatter intellij,shell script formatter online,shellcheck docker,add a shebang or a 'shell' directive,shfmt,how to test run a bash script,shellcheck vscode,shellcheck ubuntu install,shellcheck github actions,shellcheck rpm,shellcheck wiki,shellcheck epel,vim ale shellcheck,add a shebang or a shell directive,how to find errors in shell script,csh syntax check,bash linter online,bash linter vscode,bash shebang,shellcheck brew,shell-checker github,if 2,bash formatter,install shellcheck centos,shell script generator

admin

admin

Next Post
Improve your bash/sh shell script with ShellCheck lint script analysis tool

Australia Proposes Security Law to Protect Critical Infrastructure

Recommended.

Improve your bash/sh shell script with ShellCheck lint script analysis tool

Ex-Ferrari Boss Stefano Domenicali To Replace Chase Carey As New F1 CEO: Garmin Venu Sq, Venu Sq Music Edition GPS Smartwatches With Colour Selena Rajkot DIG settled cases in favour of criminals in tune with politicians: MP Has Mumbai: In absence of guidelines, idol makers stick to norms issued for Zack 4 NIST SP 800-53 Revision 5 Released – Next Generation Security and Privacy Controls

September 29, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

U.S. Officials: Russia Behind Dissemination of Virus

August 6, 2020

Trending.

Improve your bash/sh shell script with ShellCheck lint script analysis tool

Got Kids? Limit Computer Usage Per Account in Linux With Timekpr-nExt

October 29, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

How to restart the Ubuntu 20.04-Linux Hint network

September 25, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

LockBit ransomware seamlessly encrypts 225 systems

May 13, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

Download Ultimate ‘Security for Management’ Presentation Template

October 30, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

How to capitalize the first letter of the python string and other uses of the capitalize) (function – Linux Hint

May 5, 2020
mexlinux.com

MexLinux.com

We develop for Linux for a living, We used to develop for DOS.
Going from DOS to Linux is like trading a glider for an F117.

Categories

  • Hosting
  • Latest
  • Security
  • Server
  • Tech

Recent News

Improve your bash/sh shell script with ShellCheck lint script analysis tool

Delivering value to a remote workforce: A practical approach

November 19, 2020
Improve your bash/sh shell script with ShellCheck lint script analysis tool

Tetrade hackers target 112 financial apps with Ghimob banking TrojanSecurity Affairs

November 18, 2020
  • Home
  • Hosting
  • Tech
  • Server
  • Security

© 2020 MexLinux - Sitemap

No Result
View All Result
  • Home
  • Hosting
  • Tech
  • Server
  • Security

© 2020 MexLinux - Sitemap