'トラップ' killall $$; rm -f $folder2;exit ' 18 20 24

'トラップ' killall $$; rm -f $folder2;exit ' 18 20 24

このコマンドに問題がありますか?

$ trap 'killall $$ ; rm -f $folder2;exit ' 18 20 24

コマンドはforループ内にあり、for実行中に押すとプロセスを停止CTRLし、独自にZ生成されたすべてのファイル(内部的に)を削除したいと思います。folder2folder2

ただし、ターミナルで - を押すとCTRL動作が停止しますが、それ以降は他の操作を実行できず、動作しません。ZCTRLC

ベストアンサー1

問題は、現在のプロセスPIDを提供している間、killallそのPIDではなくプロセス名と一致するパターンが必要であることです。代わりに$$使用したいですkill

また、ディレクトリとその内容の両方を削除するには、次のよう-rに切り替える必要がありますrm

最後に、プロセスを終了した後に実行するすべての操作は適用されません。kill最後に移動してtrap完全に削除しますexit

trap 'rm -rf "$folder2";kill $$' 18 20 24

for削除する前にループを停止するには、$folder2以下を使用できますbreak

trap 'break;rm -rf "$folder2";kill $$' 18 20 24

おすすめ記事