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.

bash
#!/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