从 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变量要小写。
我正在尝试从 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变量要小写。