Haluan ohjata ohjelman lähdön tiedostoon, jonka nimi on muuttuja, ja samalla ohjata mahdollinen virhe uudelleen. Tämä on toistaiseksi komentosarja:
#!/bin/bash echo "Se ejecutará el PET-linux.x con PET.inp como input, debe indicarse el nombre del archivo output." echo "Nombre del archivo .out: " read outfile ./PET-linux.x < PET.inp > ${outfile}.out 2> /dev/null echo $?
Jos suoritan ohjelman tietäen, että se tekisi virheen, saan tämän päätelaitteeseen:
samuel@samuel-P5Wx6:~/Documents/Fisica/19-20/Radiactividad/Prácticas/Practicas-MontCarlo/PET/pruebas$ ./ejecutarPET.sh Se ejecutará el PET-linux.x con PET.inp como input, debe indicarse el nombre del archivo output. Nombre del archivo .out: test ./ejecutarPET.sh: line 7: 25715 Floating point exception(core dumped) ./PET-linux.x < PET.inp > ${outfile}.out 2> /dev/null 136
Tiedän, miksi tämä virhe tapahtuu, mutta haluan, että se ei näy päätelaitteessa näin. Voinko ”t käyttää 2>
samanaikaisesti >
kanssa?
Kiitos.
Kommentit
- Komentosarjaa käyttävä kuori ilmoittaa virheestä, ei itse PET-linux.x -ohjelma. Uudelleenohjaus koskee vain PET-linux.x-ohjelmaa .
vastaus
Kuten on todettu kommentoi , se on komentosarjakomentojesi raportti liukuluku poikkeuksesta sovelluksestasi.
Muokkaa PET-linux.x
-riviä seuraavasti poikkeuksen saamiseksi. ja poistu äänettömästi. Voit testata poikkeuksen tarkistamalla 136: n palautustilan ja kirjaamalla sen tarvittaessa. (Jos et halua raportointia, jätä vain se toinen rivi pois. Olen sisällyttänyt sen niin, että näet kuinka tunnistaisit liukulukuisen poikkeuksen ohjelmallisesti, jos sinun tarvitsee tehdä niin.)
( trap "exit" SIGFPE; ./PET-linux.x < PET.inp > "$outfile.out" ) 2>/dev/null [[ $? -eq 136 ]] && echo "Uh oh we caught a floating point exception" >&2
Kommentit
- Se toimi! Kiitos paljon!