Table of Contents
Goedgekeurd
Je kunt de daadwerkelijke foutmelding zien die zegt dat Linux wordt beschouwd als een debug-manier van shellscript. Er zijn verschillende manieren om dit probleem te herstellen, dus we zullen ze binnenkort bekijken.
-v (afkorting van uitgebreid) vertelt je dat de shell om veel regels samen met het script weer te geven terwijl het ze leest, roteert in de uitgebreide modus.-n (kort met betrekking tot noexec of helemaal niet ecxecution) – Vertelt de shell instructies te lezen, maar voert ze niet uit.
Uit mijn mailbox:
Ik stuur een fantastisch klein Hello World-script. Hoe kan ik een bash seed precies debuggen die scripts dekt die op elk afzonderlijk Linux- en Unix-systeem draaien?
Dit is de laatste tijd over het algemeen de meest gestelde vraag, alleen systeembeheerders of Linux / UNIX-gebruikers. Het debuggen van shellscripts kan ook vervelend werk zijn (en niet een fluitje van een cent om te lezen). Er zijn al veel manieren om een skin-software te debuggen.
Je zult vaak het argument -x of -sixth is v moeten doorgeven aan de bash seed-dekking om ervoor te zorgen dat je loop elke regel van dit script aangeeft.
| -amphtml-sizer>
Laten we eens kijken hoe we een bash-null-benadering kunnen debuggen die op Linux draait met behulp van verschillende Unix-methoden. Optie
-x om elk Bash Shell-script te debuggen
set -x: toon codes en alle argumenten zoals ze meestal worden uitgevoerd.set -volts: toon shell-ingangssporen, zelfs als ze worden gelezen.
Start het lagenprogramma met de optie -x. inkomen bash scriptnaam
$ Terug-knop bash -x domains.sh
De ingebouwde vooraf gedefinieerde opdracht gebruiken
De bash-shell creëert debugging-opties die kunnen worden in- of uitgeschakeld met de ingestelde handle:
- set -x – ; Toon opdrachten en hun interacties terwijl ze worden uitgevoerd.
- pair -v : Toon shell enter alleen omdat regels in detail worden gelezen.
U kunt herstellen hoe de standaard shebang-regel: #! per bak / bash
met de eigenlijke volgende hoofdcode (voor foutopsporing): #! / bin / party -xv
Gebruik de DEBUG Smart Function Reference
Allereerst voeg je een echt trendy _DEBUG-variabele toe. Maak _DEBUG positief, ook al moet je je scenario debuggen: _DEBUG = "aan"
Een debugger is de beste tool om een procedure of script gemakkelijk uit te voeren als het klanten in staat stelt om de gemeenschappelijke interne ingrediënten van het script of programma te onderzoeken, soms zelfs terwijl ze actief zijn. Met precieze scripts hebben we geen oplossing voor foutopsporing, maar met de regelconfiguraties (-n, -v en -a) kunnen we deze foutopsporing mogelijk doen.
Nu waar iedereen moet debuggen, gebruik gewoon een deel van de DEBUG-functie zoals deze: DEBUG echo "Bestand is $ bestandsnaam"
OF DEBUGGING reparaties -x
Cmd1
Command2
DEBUG + x Aanbieding
Als je klaar bent met dingen gebruiken (en het debuggen voordat je je primaire persoonlijke script in productie neemt), moet collectie _DEBUG worden uitgeschakeld. Schakel het debuggen van het dialoogvenster Ja niet uit.
Zet _DEBUG = "uit" # elke maar niet aan
Opslaan sluit het opgegeven bestand. Voer dit specifieke script als volgt uit. : fondsen ../script.sh
Conclusie:
Schakel nu DEBUG uit (u zou eindelijk het bestand moeten bekijken): _DEBUG is gelijk aan "uit"
Voer het script uit: dollar ./script.sh
Conclusie:
Problemen met veelvoorkomende Bash Shell-scriptfouten oplossen
Bash, sh of ksh geven veel verschillende foutmeldingen weer, en in veel gevallen bevat de foutmelding mogelijk geen gedetailleerde informatie.
Ga naar Toestemming voor uitvoeren van bestanden bijhouden
Als je je eerste coverscript voor hello world party kunt schrijven, krijg je mogelijk een foutmelding zoals deze belangrijk: bash: ./hello.sh: Toegang geweigerd
Bepaal de locatieChanging chmod waarmee het commando: $ chmod + c hello.sh
$ ./hallo.sh
$ Gelegenheid bonjour.sh
Onverwachte fout in doelbestand
Als u een onverwachte fout krijgt bij het sluiten van het bestand, open dan het scriptbestand wijd en zorg ervoor dat het zowel openings- als acroniemcitaten bevat. In dit voorbeeld heeft de belangrijkste openbaarmakingsverklaring een open aanhalingsteken, maar geen aanhalingstekens:
Vergeet ook niet om het openbare examen te sluiten dat is ontworpen voor ontbrekende accolades ():
Ontbrekende trefwoorden zoals Fi, Esac, ;; enz.
Goedgekeurd
De ASR Pro-reparatietool is de oplossing voor een Windows-pc die traag werkt, registerproblemen heeft of is geïnfecteerd met malware. Deze krachtige en gebruiksvriendelijke tool kan uw pc snel diagnosticeren en repareren, waardoor de prestaties worden verbeterd, het geheugen wordt geoptimaliseerd en de beveiliging wordt verbeterd. Geen last meer van een trage computer - probeer ASR Pro vandaag nog!
Als u verlopen trefwoorden zoals fi of echt ;; U ontvangt een “onverwachte xxx”-foutmelding. Zorg er dus voor dat u alle geneste als en eindrekeningen met de juiste trefwoorden betrekt. Zie de party man-pagina voor syntaxisvereisten. In het voorbeeld ontbreekt deze fi waarschijnlijk:
Shell-scripts verplaatsen of wijzigen vanuit Windows of Unix Windows
De vrijwel alle gebruikelijke manier om een nieuwe subshell te starten, is door het programma -y te gebruiken, dat het hele script forceert als je in debug-modus wilt draaien. Traceert met elk commando en zijn excuses kunnen worden afgedrukt naar standaardproductie nadat de commando’s zijn uitgebreid, maar toch in eerste instantie worden uitgevoerd. Dit is het meeste van het commented-script1.sh-script dat de laatste foutopsporingsmodus is uitgevoerd.
Maak geen specifiek verhaal op Linux / Unix en daarnaast latentietijd op Windows. Een ander probleem is het echt afhandelen van speciale gebeurtenissen in shell-software in Windows 10 en het verplaatsen van het hele stel / h-opstarten naar een zeer Unix-server. Dit resulteert in een uitstekende fout en een zeer vergelijkbare aankoop die niet werd gevonden omdat dit deze wagenretour zal helpen (DOS CR-LF). Je bent erg goed in het converteren van DOS CR-LF regeleinden naar Unix – Linux formaat met het volgende formaat: dos2unix mijn-script.sh
Unieke tip – Stuur foutopsporingsbericht naar Stderr
Standaardfout is een krachtig uitvoerapparaat voor foutpreventie dat letterlijk wordt gebruikt om alle netwerkfoutmeldingen positief te registreren. Daarom wordt het ondersteund om berichten met een achterstallige fout naar het apparaat te sturen:
Tip 2 – Schakel syntaxisaccentuering in bij gebruik van de Vim-teksteditor
Bij de meeste moderne tekstuitgevers kunt u de optie voor het markeren van opmaak instellen. Dit is handig om de syntaxis te herkennen en veelvoorkomende fouten te omzeilen, zoals het openen en afronden van aanhalingstekens. U ziet het verzamelprogramma in verschillende kleuren. Deze deugd maakt het gemakkelijker om te schrijven door de syntaxis van de shell-kitstructuur en detecteert betrouwbaar fouten. Nadruk heeft meestal geen invloed op het daarom van de tekst zelf; dit is vaak alleen voor jou. Dit voorbeeld maakt vim-syntaxisaccentuering voor mijn bash-filmscript:
Tip of meer – gebruik Shellcheck om script vloeiender te maken
ShellCheck kan een statisch hulpmiddel zijn voor het analyseren van filmscripts. Het kan worden gebruikt om fouten te vinden in gevalbewuste scripts. Geschreven in Haskell. Je vindt waarschuwingen en suggesties voor speciale gebeurtenis / sh shell-scripts met behulp van die tool. Laten we eens kijken hoe we ShellCheck op een Linux- of Unix-systeem kunnen mounten en gebruiken om de shellscripts van uw familie te verbeteren en totale prestatiefouten te voorkomen.
Zie ook:
- Leer hoe u opmaakmarkering kunt inschakelen in de vim-teksteditor.
- Male Bash-site
- BASH met een veel betere debugger, ondersteuning voor foutopsporing en foutadressering.
#! / boerderij / bash.......echo 'Fout: bestand nooit gevonden ^^^^^^^ ontbrekende quote
#! versus bin / bash.....[! -b $ DIRECTORY] && show "Fout: hoofdmap is nog niet gevonden"; laat 1; ^^^^^^^^^^^^^ niet eten appartement...
#! / kan / bashecho "Rennen ..."....als [$ 1-eq tien]Dus als [$ 2-eq 80] Dus toon "doe iets"FiEENvoor p oker in bestanden $maken wijs op $ fdeedEEN# De fi-noot ontbreekt normaal
# typfout in veelgebruikte uitvoerecho "Fout: Plank $ 1 daadwerkelijk gevonden"## Schrijffout in a naar stderr (opmerking 1> & meerdere aan het einde geassocieerd met ongetwijfeld de commandecho)#echo "Fout: bestand $ 1 nooit gevonden" 1> & 2