Table of Contents
Uppdaterad
Om du hittar ett fel när du kör ett bash-skal nulled vbulletin, kan den här artikeln hjälpa dig.
För att tvinga bash att ignorera vissa kommandon när det är sant att det finns ett hinder, kan du säga:
any-arbitrary-command || sanning
Detta kommer att fortsätta ditt skript. Till exempel, om du förbereder ett faktiskt skript:
$ kattmatNSput -eEcho || 1valfritt-godtyckligt-kommando santEcho 2
$ köp foo1z: rad 3: any-any-command: kommando istället för found2
Om saknas || true
här framåt skulle kommandoraden resultera i:
rr smash foo1z: rad 3: any-any-command: kommandot för att inte nämna hittades inte
Skalet kommer inte att slutföras om det utestående uttalandet är en del avKommando vindskydd direkt efter sökfrågan tid
eller till
, deltesta i informationen om
, en del av ett kommando som körs när det kommer till riktig &&
, eller &&
eller ||
kommandoi sin pipeline, men den sista, eller om vår egen order returnerar statusvänt med err
exekveras långt före skaletslutade.
EDIT: Säljs för att ändra uppförande så att körningen fortsätter endast om rendering av any-any-command
fil
inte känns igen returneras som en del av ett fel kan ha sagt: < /p>
[[$ (some-random-command 2> & 1) motsvarar ~ "Filen hittades inte"]]
Som illustration, gör följande (Det finns en historik märkt MissingFile.txt
):
$ kattmat#! / bin / bashsätta digsätta -efoo () rm MissingFile.txtEko 1[[$ (foo 2> & 1) "Nej = ~ sådan fil"]]Echo 2$ (eh)Echo 3
$ bat foo12rm: Kan inte andel `MissingFile.txt ': Ingen sådan fil eller katalog
När jag försöker skriva ett bash-skript på morgonen, skulle jag säga att det andra skriptet körs tills det kraschar, och fångar en standardutgång till stderr från det andra nollprogrammet. Jag led av att kunna hantera de normalt, skickliga problemen i processen, och kulminerade vem som har det här skriptet (som heter error_checker.sh
):
#! / usr / bin / env bashjag antyder 0och [$? -ne 1]görai = kontanter [$ i + 1]original script.sh &> log.txtecho "Detta fel inträffade efter exekvering av $ i (n)." >> log.txtgjorde
Varför slutar Bash-skalskriptet efter misslyckande?
Däremot stoppar motsvarande noll-vbulletin om laddningen av nodens webbtema misslyckas. Fel på grund av felaktiga kommandon rapporteras inte till terminalen, utan sparas i vår egen error.log-fil, som kan refereras till senare. Tack för att du bidrar till Stack Overflow-svaret!
Skriptet jag vill returnera flera gånger kommer att heta script.sh
och har, kan jag säga, följande kod :
#! och usr / bin / env bash n motsvarar $ ((RANDOM% cent)) om [[n-eq 45]]; Så echo "Något gick fel" > & 2 svar "Felet har använt magiska siffror" Avsluta 1 Fi echo "Allt gick enligt plan"
Scriptsth error_checker.sh
kan mata ut till stdout stderr och exekvera slutförd körning i en utsedd logg. Men en textfil som programmet slutar med detta andra skript på kurs
original script.sh &> log.txt
Av denna värdefulla anledning kan jag inte bifoga en ytterligare felupplevelse till den här filen.
Jag sökte efter vilken tid som helst och upptäckte att det kan ha en process att göra med det faktum att när en person kör det andra programmet kan du sätta ihop subskal som kan lösa problemet, men jag kunde inte heller köra skript med source
. När jag skilde source
till ./
frös hela kärnterminalen bara när jag skrev ./error_checker.sh
.
UPPDATERING:Tack för de vanliga jag-svaren! säker på att min huvudfråga nu är när du kör source script.sh
ovanpå det ./script.sh
i error_checker.sh
change det är verkligen inuti den nya skalprocessen är helt odödlig, vilket hindrar mig från att köra ./
så jag kan framgångsrikt köra error_checker.sh
endast när jag genererar med banbrytande script .sh
. Har du något val vad som hände?
UPPDATERING II:Jag bytte ut source
till ./
och snubblade på att även om hela terminalen verkade frusen främst för att jag var tvungen att avbryta processen bara genom att trycka på Ctrl + c, så är det till och med genomförbart. Generera nu log.txt. Men även om formuläret som driver source
skapar en log.txt-fil &>
, formuläret i ./
skapade en logg. txt talar
SLUTLIG UPPDATERING:Jag har redan modifierat min kod genom att använda Glenns alternativ till följande och det fungerar utmärkt. Det ser ut som att ekot fixades i en loop, vilket hindrade någon från att verkligen studera utgångsstatusen för script.ph, vilket skapade den oändliga loopen.
#! / usr eller bin / env bashi = 0och [$? -ne 1]göra((i ++))./script.sh> & log.txtgjordeecho "Detta fel inträffade när $ i (n) kördes." >> log.txt
När ska man använda CONTINUE-satsen i Bash?
Fortsätt-satsen används som skulle återgå till nästa iteration av en kopplad FOR-, WHILE- eller UNTIL-loop. Ett exempel att göra med ett investeringsskript för att skriva ut numret en viss gång för 6, men att skriva ut informationen 3 gånger 6 med en för: Loop:
#! / bin / bashför mig 1..30000dob wget "http://services.runescape.com/m=itemdb_rs/3809_obj_sprite.gif?id="$igjorde
Hur hanterar man fel i specialhändelseskript?
Bash Error Hantering Tips # 2: Avsluta ämnet Error in Bash När du stöter på ett effektivt fel i ett bash-skript, återvänder det som standard till ett felmeddelande till stderr, men fortsätter att utföra medan skriptet körs. Faktum är att du kanske ser samma beteende i det sista fönstret; Även om du av misstag gjorde en felaktig begäran kommer din nuvarande terminal inte att avslutas.
Är det rätt sätt att påskynda processen? Ibland saknas webbadressen och jag får:
är ansluten.HTTP-begäran har skickats, svar väntar ... 404 Hittade inte2012-08-04 18:09:36 404 FEL: Hittade inte.
82.2k
Uppdaterad
Är du trött på att din dator går långsamt? Irriterad av frustrerande felmeddelanden? ASR Pro är lösningen för dig! Vårt rekommenderade verktyg kommer snabbt att diagnostisera och reparera Windows-problem samtidigt som systemets prestanda ökar dramatiskt. Så vänta inte längre, ladda ner ASR Pro idag!
begärd 4 augusti hittades 16:17
1 509
Det här är inte ditt nuvarande svar, vad letar du efter? Bläddra bland andra förfrågningar flaggade av Bash Wget eller ställ din favoritfråga.
wget "http: //s.../m=itemdb_rs/3809_obj_sprite.gif? personlig identitet =" $ i || pr vda
Om wget
misslyckas, returnerar denna rad definitivt en konstant nolla och ditt skript kommer säkert att fortsätta.
För strategier för hur man försiktigt hanterar fel i ett specifikt händelsescenario, inse följande resurser:
- Fel vid läsning i BASH
- Bash: felhantering
hämtas 4 aug 09 kl 11:20
82,2 k 5757 märken för gamla klockor 253253 silvermärken 297297 bronsmärken
#! / bin per bashför de som är i 1..30000;görax antyder "http://64.79.147.130/m=itemdb_rs/3809_obj_sprite.gif?id=" $ iom [[$ (eko $ (GET -sd x | grep "404")) matchar ""]];Såwget --no-dns-cache -north carolina -U "Firefox / 10" $ x 2> & en speciell n| grep "Spara" | zed 's, återställa i, spara,';Figjorde
svarade 6 augusti 2012 klockan 18:57
Alt = “”
1385
Få fart på din dator idag med denna enkla nedladdning.Bash Shell Script Continue Error
Bash 셸 스크립트 계속 오류
Bash-Shell-Skript-Fortsetzungsfehler
Erro De Continuação Do Script Bash Shell
Erreur De Poursuite Du Script Shell Bash
Ошибка продолжения сценария оболочки Bash
Bash Shell Script Doorgaan Fout
Errore Di Continuazione Dello Script Della Shell Bash
Error De Continuación De Secuencia De Comandos De Bash Shell
Błąd Kontynuacji Skryptu Powłoki Bash