Pasitikrinam su ShellCheck

 

Šis scenarijus (bash skriptas) skirtas patikrinti bash skriptų sintaksės klaidas naudojant įrankį shellcheck. Jis leidžia lengvai peržiūrėti visus .sh failus, esančius jūsų $HOME/git ar kokiame nors kitame kataloge, ir pasirinkti norimą patikrinti skriptą. Po to, shellcheck įrankis yra paleidžiamas su pasirinktu skriptu, kad nustatytų galimas sintaksės ar kitas klaidas ir neefektyvumus.

Kaip veikia

  1. Skriptas parodo visų .sh failų sąrašą jūsų parinktame kataloge ir prašo įvesti norimo skripto numerį.
  2. Jis patikrina, ar įvestas numeris yra tinkamas (sveikasis skaičius) ir ar patenka į galimų skriptų diapazono ribas.
  3. Gavęs tinkamą numerį, jis nusistato pasirinktą skriptą pagal įvestą numerį.
  4. Tuomet patikrinama, ar shellcheck įrankis yra įdiegtas sistemoje. Jei ne, rodomas klaidos pranešimas ir skriptas baigia darbą.
  5. Jei shellcheck yra įdiegtas, paleikiama shellcheck komanda su pasirinktu skriptu, kad būtų parodyta jo analizė.

Privalumai

  • Paprasta naudoti: lengva peržiūrėti ir pasirinkti norimą skriptą iš katalogo.
  • Automatizuota sintaksės patikra: shellcheck yra galingas įrankis, padedantis rasti potencialias klaidas ar neefektyvumus bash scriptuose.
  • Lanksti: Galima lengvai keisti katalogas ar failų tipus, kuriuos norite analizuoti.

Trūkumai

  • Apribota funkcinė sritis: Šis scenarijus skirtas tik patikrinti sintaksės klaidas, bet negali atlikti jokių kitų veiksmų su skriptais.
  • Neautomatizuota: Reikia rankiniu būdu pasirinkti skriptą kiekvieną kartą, kai norite jį patikrinti.
  • Nėra išimčių apdorojimo: Scenarijus gali nekorektiškai veikti, jei sutinka netikėtą situaciją, pavyzdžiui, jei ls ar sed komandos išveda kitokią nei tikėtąsi išvestį.

Galimi papildymai ir patobulinimai

  • Automatinis visų skriptų patikrinimas: Galima papildyti funkciją, kuri automatiškai patikrintų visus .sh failus kataloge, nereikalaujant rankinio pasirinkimo.
  • Klaidos pranešimų apdorojimas: Pridėti klaidos pranešimų apdorojimą, kad scenarijus nesustotų dėl netikėtų situacijų.
  • Papildomi parametrai: Leisti naudotojui nurodyti papildomus shellcheck parametrus ar kitus katalogus patikrinimui.
  • Integracija su kitais įrankiais: Galima integruoti su kitais statinės analizės įrankiais, tokiais kaip lint ar cppcheck, kad galėtų patikrinti įvairius programavimo kalbų failus.

Apskritai, šis scenarijus yra naudinga priemonė programuotojams, kurie nori greitai patikrinti savo bash skriptų sintaksę ir išvengti potencialių klaidų ar neefektyvumų. Nors jis turi tam tikrų trūkumų, jį galima lengvai patobulinti pagal konkrečius poreikius. Net ir neprogramavęs asmuo galėtų suprasti šio scenarijaus veikimo principą ir naudojimą, nes jis yra gana paprastas ir aiškus.


#!/bin/bash
 
# File name: patikra
# Author vaidotak
# Date: 2024-06-18
# Description:
# URL:https://funkcijos.wordpress.com/2024/06/18/pasitikrinam-su-shellcheck/
 
# Parodyti $HOME/git kataloge esančius skriptus su .sh galūne
echo "Pasirinkite skripto numerį iš sąrašo:"
counter=0
shopt -s nullglob # Leidžiame, kad glob pattern negrąžintų nieko, jei nėra failų
for file in "$HOME"/git/*.sh; do
    ((counter++))
    echo "$counter. $(basename "$file")"
done
 
while true; do
    read -r -p "Įveskite norimo skripto numerį: " script_number
 
    # Patikrinti ar įvestas numeris yra tinkamas
    if ! [[ "$script_number" =~ ^[0-9]+$ ]]; then
        echo "Klaida: Įveskite skaičių."
        continue
    fi
 
    # Patikrinti ar įvestas numeris yra tinkamo diapazono
    num_scripts=$(ls -1 "$HOME"/git/*.sh 2>/dev/null | wc -l)
    if ((script_number < 1 || script_number > num_scripts)); then
        echo "Klaida: Netinkamas skripto numeris."
        continue
    fi
 
    break
done
 
# Gauti pasirinkto skripto pavadinimą
selected_script=$(ls -1 "$HOME"/git/*.sh 2>/dev/null | awk "NR==$script_number")
 
# Patikrinti pasirinkto skripto sintaksę naudojant shellcheck
if ! command -v shellcheck &>/dev/null; then
    echo "Klaida: shellcheck programa nerasta. Įdiekite shellcheck, kad galėtumėte tęsti."
    exit 1
fi
 
echo "Vykdau shellcheck $selected_script"
shellcheck "$selected_script"

Komentarai

Populiarūs šio tinklaraščio įrašai

Configuring a NixOS firewall for everyday use

Setting up syncthing as a service on openSUSE and other Linux distributions

Monitoring SFTP server updates with Python