我正在尝试从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
}
答案 0 :(得分:3)
在here-doc delimiter 'EOF'
周围使用单引号以避免进程扩展
cat << 'EOF' > /etc/init.d/example
...
EOF
但是生成的sh脚本仍然存在引用问题:
cd ${WORK_DIRECTORY}
应该是
cd "${WORK_DIRECTORY}"
如何定义变量DESC,LOCK,最后变量应该是小写的。