Правильный способ trap в сценарии zsh

Дальнейшее объяснение того, почему ответ @That Brazilian Guy работает.

libcurl3-devпредоставляется несколькими пакетами, одним из которых являетсяlibcurl4-openssl-dev

Сначала что libcurlустановлено? Мы находим, что libcurl3установлен.

# aptitude search libcurl
v   libcurl-dev                                          -
v   libcurl-dev:i386                                     -
p   libcurl-ocaml                                        - OCaml curl bindings (Runtime Library)
p   libcurl-ocaml:i386                                   - OCaml curl bindings (Runtime Library)
v   libcurl-ocaml-d6l49                                  -
p   libcurl-ocaml-dev                                    - OCaml libcurl bindings (Development package)
p   libcurl-ocaml-dev:i386                               - OCaml libcurl bindings (Development package)
v   libcurl-ocaml-dev-d6l49                              -
v   libcurl-ocaml-dev-ephj1:i386                         -
v   libcurl-ocaml-ephj1:i386                             -
v   libcurl-ssl-dev                                      -
v   libcurl-ssl-dev:i386                                 -
i A libcurl3                                             - easy-to-use client-side URL transfer library (OpenSSL flavour)
p   libcurl3:i386                                        - easy-to-use client-side URL transfer library (OpenSSL flavour)
p   libcurl3-dbg                                         - debugging symbols for libcurl (OpenSSL, GnuTLS and NSS flavours
p   libcurl3-dbg:i386                                    - debugging symbols for libcurl (OpenSSL, GnuTLS and NSS flavours
v   libcurl3-dev                                         -
v   libcurl3-dev:i386                                    -
i A libcurl3-gnutls                                      - easy-to-use client-side URL transfer library (GnuTLS flavour)
p   libcurl3-gnutls:i386                                 - easy-to-use client-side URL transfer library (GnuTLS flavour)
v   libcurl3-gnutls-dev                                  -
v   libcurl3-gnutls-dev:i386                             -
p   libcurl3-nss                                         - easy-to-use client-side URL transfer library (NSS flavour)
p   libcurl3-nss:i386                                    - easy-to-use client-side URL transfer library (NSS flavour)
v   libcurl3-nss-dev                                     -
v   libcurl3-nss-dev:i386                                -
v   libcurl3-openssl-dev                                 -
v   libcurl3-openssl-dev:i386                            -
v   libcurl4-dbg                                         -
v   libcurl4-dbg:i386                                    -
v   libcurl4-dev                                         -
v   libcurl4-dev:i386                                    -
p   libcurl4-doc                                         - documentation for libcurl
p   libcurl4-gnutls-dev                                  - development files and documentation for libcurl (GnuTLS flavour
p   libcurl4-gnutls-dev:i386                             - development files and documentation for libcurl (GnuTLS flavour
p   libcurl4-nss-dev                                     - development files and documentation for libcurl (NSS flavour)
p   libcurl4-nss-dev:i386                                - development files and documentation for libcurl (NSS flavour)
p   libcurl4-openssl-dev                                 - development files and documentation for libcurl (OpenSSL flavou
p   libcurl4-openssl-dev:i386                            - development files and documentation for libcurl (OpenSSL flavou
p   libcurlpp-dev                                        - c++ wrapper for libcurl (development files)
p   libcurlpp-dev:i386                                   - c++ wrapper for libcurl (development files)
p   libcurlpp0                                           - c++ wrapper for libcurl
p   libcurlpp0:i386                                      - c++ wrapper for libcurl

Попробуемlibcurl-dev

# apt-get install libcurl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libcurl-dev is a virtual package provided by:
  libcurl4-openssl-dev 7.35.0-1ubuntu2.13
  libcurl4-nss-dev 7.35.0-1ubuntu2.13
  libcurl4-gnutls-dev 7.35.0-1ubuntu2.13
You should explicitly select one to install.

E: Package 'libcurl-dev' has no installation candidate

Нет, кажется, libcurl4так что давайте будем осторожны с этим...

Попытка libcurl3-devнапрямую

# apt-get install libcurl3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libcurl4-openssl-dev' instead of 'libcurl3-dev'
The following extra packages will be installed:
  comerr-dev krb5-multidev libgcrypt11-dev libgnutls-dev libgnutlsxx27
  libgpg-error-dev libgssrpc4 libidn11-dev libkadm5clnt-mit9 libkadm5srv-mit9
  libkdb5-7 libkrb5-dev libldap2-dev libp11-kit-dev librtmp-dev libtasn1-6-dev
Suggested packages:
  krb5-doc libcurl4-doc libcurl3-dbg libgcrypt11-doc gnutls26-doc gnutls-bin
  krb5-user
The following NEW packages will be installed:
  comerr-dev krb5-multidev libcurl4-openssl-dev libgcrypt11-dev libgnutls-dev
  libgnutlsxx27 libgpg-error-dev libgssrpc4 libidn11-dev libkadm5clnt-mit9
  libkadm5srv-mit9 libkdb5-7 libkrb5-dev libldap2-dev libp11-kit-dev
  librtmp-dev libtasn1-6-dev
0 upgraded, 17 newly installed, 0 to remove and 4 not upgraded.
Need to get 2,542 kB of archives.
After this operation, 11.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Итак, даже libcurl3-devхочет libcurl4-openssl-devтак что поехали...

0
27.01.2020, 05:19
1 ответ

Вы включаете trapв сценарий оболочки или вводите его в командной строке? Рассмотрим, например:

#!/usr/bin/env zsh

interrupted=false
trap 'tput cnorm; interrupted=true' INT TERM

for ((i = 0; i < 100; ++i)); do
    clear
    date
    sleep 1

    if [[ "${interrupted}" = "true" ]]; then
        echo "Interrupted"
        break
    fi
done

При этом я имитирую «обратный отсчет» с циклом задержки, который печатает время. Я могу прервать "обратный отсчет". Я печатаю «прервано» только для иллюстрации.

$./ex.zsh
Sat Jan 25 12:59:12 EST 2020
^CInterrupted
$

Мой пример включает ваш tput cnorm, но на самом деле он мне не нужен, так как я ничего не делаю, чтобы изменить его с самого начала, но я включаю его, чтобы он более точно соответствовал тому, что у вас есть в вашем вопросе выше.

Это что-то близкое к тому, что вы пытаетесь сделать?

1
28.01.2020, 02:54

Теги

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