显然我在这里做错了。
云初始化脚本 /etc/cloud/cloud.cfg
...
runcmd:
- [ sh, /opt/cloud-init-scripts/whatever.sh ]
Run Code Online (Sandbox Code Playgroud)
剧本 /opt/cloud-init-scripts/whatever.sh
#!/bin/bash
...
. /home/ubuntu/third-party/script.sh --silent
Run Code Online (Sandbox Code Playgroud)
第三方脚本 /home/ubuntu/third-party/script.sh
#!/usr/bin/env bash
function some_function() {
...
Run Code Online (Sandbox Code Playgroud)
我进入时出错 /var/log/cloud-init-output.log
/opt/cloud-init-scripts/whatever.sh: 3: /home/ubuntu/third-party/script.sh: Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)
我一定在这里遗漏了一些明显的东西。我尝试使用source,.并且sh在调用第三方脚本时,尝试在任何地方更改shebang,但没有成功。
如果我从命令行运行相同的命令,它就可以工作。
您已sh在 下指定了shell runcmd,但将 she-bang 设置为bash。后者无关紧要,因为如果您运行sh /opt/cloud-init-scripts/whatever.sh它,它将使用 sh shell 运行。我猜您可能正在使用POSIX与shshell不兼容的非shell 功能。
或可替换地,如果你的目的是要运行脚本bash外壳,改runCmd在cloud-init脚本
runcmd:
- [ bash, /opt/cloud-init-scripts/whatever.sh ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5276 次 |
| 最近记录: |