1

我有一个 shell 脚本,我想在后台运行我的可执行“服务器”的两个实例。但是,当我运行脚本时,我收到错误“读取:缺少参数”。当我删除“&”以在后台运行时,不会发生此问题,但随后会产生不良行为。

服务器可执行文件后面是地址和端口对,但我删除了所有检查参数数量是否正确的代码。抛出的错误在哪里,我怎样才能让这个脚本工作?

#Location of executable.
SERVER=server
SERVER_NAME=`echo $SERVER | sed 's#.*/\(.*\)#\1#g'`

$SERVER localhost 4111 localhost 4222 &
$SERVER localhost 4222 localhost 4111 &

echo "Press ENTER to quit"
read
pkill $SERVER_NAME
4

1 回答 1

3

read期望在它读入之后的变量:

read var1

如果您只是read用来阻止脚本的执行,直到您收到用户的一些响应,请使用上述建议。


此外,这可能不是您打算做的:

SERVER=server
SERVER_NAME=`echo $SERVER | sed 's#.*/\(.*\)#\1#g'`

因为在执行之后,SERVER_NAME将只是字符串server

如果server是您环境中的命令,您可能打算做的是:

SERVER_NAME=$(server | sed 's#.*/\(.*\)#\1#g'`)
于 2012-11-28T22:42:12.520 回答