无法使用stdout exec结束Bash脚本

时间:2013-12-18 20:14:44

标签: linux bash exec

我不知道为什么我的问题在发表评论后没有得到跟进。但我试图使用

exec 3>& - 退出猫<& 3但仍然没有

我也尝试了猫<& 3 3>& - 仍然无法工作

exec 3<>/dev/tcp/$1/37491

echo -ne 060e2b3400$hexdec$cmdhex | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3

cat <&3
exec 3>&-

套接字保持打开状态。

1 个答案:

答案 0 :(得分:1)

cat之后无法添加任何内容,因为cat正在阻塞,等待通过套接字获得更多输入。如果您可以安排从另一个进程关闭套接字,cat将退出。

以下内容可能有效:

exec 3<>/dev/tcp/$1/37491

echo -ne 060e2b3400$hexdec$cmdhex | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3

( cat <&3; echo "Socket was closed" ) &
sleep 10
exec 3>&-

cat将在子shell中在后台运行,阻塞直到套接字关闭。睡眠10秒后,您的脚本将关闭套接字,您应该看到输出“Socket已关闭”。

相关问题