Shell脚本打印出“读取:缺少参数”

时间:2012-11-28 22:37:30

标签: bash shell

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

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

#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

1 个答案:

答案 0 :(得分: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'`)