net: run.sh: write launcher command to shell script

Instead of passing a whole script to the terminal via command-line
argument, write it to a file. This is in preparation to use the same
script with tmux, see next patch.

Change-Id: I15760d706b20628421c10a16514120f442d5477f
diff --git a/net/templates/run.sh b/net/templates/run.sh
index 426ed91..332b168 100755
--- a/net/templates/run.sh
+++ b/net/templates/run.sh
@@ -40,7 +40,9 @@
 
 logdir="current_log"
 piddir="run/pids"
-mkdir -p "$logdir" "$piddir"
+launcherdir="run/launchers"
+rm -rf "$launcherdir"
+mkdir -p "$logdir" "$piddir" "$launcherdir"
 
 find_term() {
   # Find a terminal program and write to the global "terminal" variable
@@ -93,20 +95,32 @@
   local pidfile_term="$piddir/$title.term.pid"
   pidfiles_must_not_exist "$pidfile" "$pidfile_term"
 
+  local launcher="$launcherdir/$title.sh"
+
+  cat << EOF > "$launcher"
+#!/bin/sh
+
+export LD_LIBRARY_PATH='/usr/local/lib'
+
+$1 &
+echo \$! > $pidfile
+wait
+
+echo
+
+while true; do
+  echo 'q Enter to close'
+  read q_to_close
+  if [ "x\$q_to_close" = xq ]; then
+    break
+  fi
+done
+EOF
+  chmod +x "$launcher"
+
   $terminal \
     -title "CN:$title" \
-    -e sh -c "export LD_LIBRARY_PATH='/usr/local/lib'
-              $1 &
-              echo \$! > $pidfile
-              wait
-              echo
-              while true; do
-                echo 'q Enter to close'
-                read q_to_close
-                if [ \"x\$q_to_close\" = xq ]; then
-                  break
-                fi
-              done" \
+    -e sh -c "$launcher" \
     &
 
   echo "$!" > "$pidfile_term"