从 shell 脚本创建初始化脚本

Creating init script from shell script

我正在尝试从 shell 脚本创建一个初始化脚本。但问题是生成的初始化脚本不携带与 shell 脚本中的“$”符号关联的变量。

例如。 shell 脚本中的以下函数被翻译为

setup_sysd () {
cat << EOF > /etc/init.d/example
#!/bin/sh
. /etc/rc.d/init.d/functions

start() {
   echo -n "Starting ${DESC}: "
   cd ${WORK_DIRECTORY}
   $EXAMPLE
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch -- "$LOCK"
   return $RETVAL
}

exit $RETVAL
EOF

被复制为,

start() {
echo -n "Starting : "
cd 

RETVAL=0
[  -eq 0 ] && touch -- ""
return 
}

在 here-doc 定界符周围使用单引号 'EOF' 以避免进程扩展

cat << 'EOF' > /etc/init.d/example
...
EOF

但是生成的sh脚本中仍然存在引用问题:

cd ${WORK_DIRECTORY}

应该是

cd "${WORK_DIRECTORY}"

还有如何定义变量DESC,LOCK,finally变量要小写。