linux - 从 shell 脚本创建初始化脚本

标签 linux bash shell init

我正在尝试从 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/

相关文章:

linux - 当我编写 iwconfig 时如何获取 ESSID 和 Access Point

linux - 打破 Bash 中的嵌套函数循环

linux - 在for循环中将一个文件中的两列分隔为两个单独的文件

linux - if [ `wc -c $i` -gt 3 ] 中的单引号是什么意思?

bash:为什么我在意外标记 `}' 附近遇到语法错误?

linux - 如何从顺序输入文件中导出输出文件名?

Linux:如何将多个 FLAC 音频文件组合成一个文件,具有不同的采样率,但不改变音高

git - 如何判断git-hook是否有rebase?

bash - 用于创建 Db 和集合的 Mongo bash 脚本

linux - 从 .sh 脚本打开新终端后,.sh 脚本中的源代码不起作用