我正在尝试从 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变量应该是小写的。
关于linux - 从 shell 脚本创建初始化脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505456/