trap
उपधाराओं के लिए प्रचारित नहीं किया जाता है, लेकिन कुछ तरीके उपधारा को मूल शैल के जाल की रिपोर्ट करने की अनुमति देते हैं और अन्य नहीं। मैंने मैश पर कुछ टेस्ट बैश के साथ किए।
GNU बैश, संस्करण 4.4.12 (1) -release (x86_64-apple-darwin16.3.0):
trap 'echo hello' EXIT
trap # trap -- 'echo hello' EXIT
echo "$(trap)" # trap -- 'echo hello' EXIT
trap | cat # trap -- 'echo hello' EXIT
(trap) | cat # trap -- 'echo hello' EXIT
cat < <(trap) # empty
cat <<< "$(trap)" # empty
bash -c 'trap' # empty
trap & # trap -- 'echo hello' EXIT
GNU बैश, संस्करण 3.2.57 (1) -release (x86_64-apple-darwin16):
trap 'echo hello' EXIT
trap # trap -- 'echo hello' EXIT
echo "$(trap)" # trap -- 'echo hello' EXIT
trap > >(cat) # trap -- 'echo hello' EXIT
trap | cat # empty
(trap) | cat # empty
cat < <(trap) # empty
cat <<< "$(trap)" # empty
bash -c 'trap' # empty
trap & # empty
यह जानना अच्छा है कि trap_output="$(trap)"
ट्रैप आउटपुट कैप्चर करने के लिए काम करेगा। मैं इसे करने के लिए किसी भी अन्य तरीके के बारे में सोच नहीं सकता, अगर वह काम करने के अलावा trap >trap_output_file
एक फ़ाइल के लिए यह करने के लिए काम नहीं किया (पेंडो में काम नहीं करेगा bash 3.2.57
) और फिर इसे वापस पढ़ने के साथtrap_output="$(<trap_output_file)"
फीफो काम नहीं करेगा bash 3.2.57
क्योंकि इसके trap &
लिए खाली है bash 3.2.57
लेकिन नहींbash 4.4.12
GNU बैश, संस्करण 4.4.12 (1) -release (x86_64-apple-darwin16.3.0):
mkfifo /tmp/fifo; trap >/tmp/fifo & trap_output=$(</tmp/fifo); rm -f /tmp/fifo; echo "$trap_output"
# trap -- 'echo hello' EXIT
mkfifo /tmp/fifo; trap_output=$(</tmp/fifo) & trap >/tmp/fifo; rm -f /tmp/fifo; echo "$trap_output"
# empty because trap_output=$(</tmp/fifo) sets the variable in a subshell
GNU बैश, संस्करण 3.2.57 (1) -release (x86_64-apple-darwin16):
mkfifo /tmp/fifo; trap >/tmp/fifo & trap_output=$(</tmp/fifo); rm -f /tmp/fifo; echo "$trap_output"
# empty because trap >/tmp/fifo & is empty since it uses trap &
mkfifo /tmp/fifo; trap_output=$(</tmp/fifo) & trap >/tmp/fifo; rm -f /tmp/fifo; echo "$trap_output"
# empty because trap_output=$(</tmp/fifo) sets the variable in a subshell