Интерпретация последовательных данных с помощью bash

El problema era set -e. Si uno presiona p. Ctrl -c mientras varios comandos se canalizan juntos, SIGINT no se envía al script, sino a otro lugar. Esto crea un error que es manejado por set -e, por lo que el script sale directamente. Para usar set -econfiable en scripts con tuberías, también se debe atraparEXIT:

#!/bin/sh
set -e
temp_dir=`mktemp -d`
cd $temp_dir
trap "rm -r $temp_dir; exit" HUP INT TERM PIPE EXIT
 for db in db1 db2 db3
   do
     pg_dump $db postgres > $db.sql
done
tar cJf -.

En este caso, también lo normal exites manejado por trap, que en muchos casos es de todos modos útil.

2
04.07.2019, 18:24
1 ответ

Не проверено!

 #!/bin/bash
 ETX=$'\003'
 STX=$'\002'
 # Open /dev/ttyUSB0 open on FD9
 exec 9< /dev/ttyUSB0
 # do any stty stuff needed on fd9
 # e.g.
 # stty 9600 < /proc/self/fd/9 > /proc/self/fd/9
 # now loop, reading from the device,
 while IFS= read -rd "$ERX" -u 9 wibble
 do
    wibble=${wibble#"$STX"}
    printf 'Got %q\n' "$wibble"
    # Do something
 done

С bashэто не будет работать, если данные содержат байты NUL. Вместо этого вам нужно было бы использовать zsh.

0
27.01.2020, 22:26

Теги

Похожие вопросы