Bashスクリプトでインタラクティブプログラムを作成しようとしています。
my_program
「Ctrl+c」で閉じたいです。ただし、これによりスクリプトも閉じます。
わかりました。
trap '' 2
my_program
trap 2
my_program
ただし、この場合はCtrl + cで閉じることはできません。
プログラムでCtrl + Cを許可しますが、それを実行するスクリプトを閉じない方法をご存知ですか?
編集:例を追加しました。
#!/bin/bash
my_program
my_program2
my_program
Ctrl + cを使用して閉じると、my_program2
スクリプト全体が終了するため実行されません。
ベストアンサー1
代わりにtrap true 2
orを使用する必要があります。これはbashシェルの「ヘルプトラップ」に記載されています。trap : 2
trap '' 2
ARGが空の文字列の場合、シェルは各SIGNAL_SPECを無視します。それを通してコマンドを呼び出す。
例:
$ cat /tmp/test
#! /bin/sh
trap : INT
cat
echo first cat killed
cat
echo second cat killed
echo done
$ /tmp/test
<press control-C>
^Cfirst cat killed
<press control-C>
^Csecond cat killed
done