質問: タイムアウト付きのシェル関数を実行する なぜこれが機能するのかtimeout 10s echo "foo bar" # foo bar しかし、これはしませんfunction echofoobar { echo "foo bar" } echofoobar # foo bar timeout 10s echofoobar # timeout: failed to run command `echofoobar': no such file or directory そして、どうすればそれを機能させることができますか?
回答: 既存のスクリプト全体の追加オプションとしてタイムアウトを追加する場合は、timeout-optionのテストを行い、そのオプションなしで自己再帰的に呼び出すことができます。example.sh:#!/bin/bash if [ "$1" == "-t" ]; then timeout 1m $0 $2 else #the original script echo $1 sleep 2m echo yawn... fi タイムアウトなしでこのスクリプトを実行する:$./example.sh -other_option # -other_option # yawn... 1分のタイムアウトで実行する:$./example.sh -t -other_option # -other_option