1

実行可能な「サーバー」の 2 つのインスタンスをバックグラウンドで実行するシェル スクリプトがあります。ただし、スクリプトを実行すると、「読み取り:引数がありません」というエラーが表示されます。「&」を削除してバックグラウンドで実行すると、この問題は発生しませんが、望ましくない動作が発生します。

サーバー実行可能ファイルの後にアドレスとポートのペアが続きますが、正しい数の引数をチェックするコードを削除しました。エラーが発生している場所と、このスクリプトを機能させるにはどうすればよいですか?

#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 に答える