从shell脚本创建init脚本

时间:2018-01-29 16:08:51

标签: linux bash shell init

我正在尝试从shell脚本创建一个init脚本。但问题是生成的init脚本没有携带与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 
}

1 个答案:

答案 0 :(得分:3)

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

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

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

cd ${WORK_DIRECTORY}

应该是

cd "${WORK_DIRECTORY}"

如何定义变量DESC,LOCK,最后变量应该是小写的。