<p>我想从PERL服务器客户端脚本运行bash脚本和python脚本。连接工作,如果通过客户端发送命令得到正确答案,例如“DATE”得到客户端中的当前日期。我想在客户端窗口中运行bash脚本,点击“脚本”,但现在它在服务器终端窗口中运行。我可以修复它并在客户端窗口中运行脚本吗?也许解决办法很简单,但现在我不知道了。事先谢谢你的帮助。你知道吗</p>
<p><strong>我的代码如何运行脚本</p>
<pre><code>
foreach ($buf) {
/^SCRIPT$/ and
print ($sock system("/bin/bash /path/to/my/bash_script")),
last;
/^DATE$/ and
print($sock
scalar(localtime),
"\n"),
last;
print $sock "NO OPTION\n";
}
</code></pre>
<p>编辑:</p>
<p>关于评论,我改了这一行:</p>
<p><code>print ($sock system("/bin/bash /path/to/my/bash_script"))</code></p>
<p>对此:</p>
<pre><code>print ($sock `/bin/bash /path/to/my/bash_script`)
</code></pre>
<p>这对于python脚本非常有效。对于交互式bash脚本,这是不正确的。这是一个简单的bash游戏,使用tput给游戏区域着色。你知道吗</p>
<p><strong>交互性-游戏中的控件:</strong></p>
<pre><code> local key=$(cat -v)
local dy=0
local dr=0
if [ "$key" == "w" ]; then
dy=$((dy-2))
fi
if [ "$key" == "s" ]; then
dy=$((dy+2))
fi
if [ "$key" == "^[[A" ]; then
dr=$((dr-2))
fi
if [ "$key" == "^[[B" ]; then
dr=$((dr+2))
fi
</code></pre>
<p>主回路是这样的:</p>
<pre><code>while [key "e" for exit not down] then
interactivity()
draw_game_area()
increase_iteration++
sleep 0.1
done;
</code></pre>