无法使bash脚本从cloud-init工作

时间:2017-09-19 09:44:37

标签: linux bash shell

显然我在这里做错了。

Cloud init脚本/etc/cloud/cloud.cfg

...
runcmd:
 - [ sh, /opt/cloud-init-scripts/whatever.sh ]

脚本/opt/cloud-init-scripts/whatever.sh

#!/bin/bash
...
. /home/ubuntu/third-party/script.sh --silent

第三方脚本/home/ubuntu/third-party/script.sh

#!/usr/bin/env bash

function some_function() {
...

错误我进入/var/log/cloud-init-output.log

/opt/cloud-init-scripts/whatever.sh: 3: /home/ubuntu/third-party/script.sh: Syntax error: "(" unexpected

我必须在这里遗漏一些明显的东西。我在调用第三方脚本时尝试使用source.sh,尝试更改各处的shebang但没有成功。

如果我从命令行运行相同的命令,它就可以工作。

1 个答案:

答案 0 :(得分:2)

您已在sh下指定runcmd个shell,但已将她设置为bash。后者并不重要,因为如果你以sh /opt/cloud-init-scripts/whatever.sh运行它将使用sh shell运行。我猜您可能正在使用与POSIX shell不兼容的非sh shell功能。

或者,如果您打算在bash shell中运行脚本,请将runCmd脚本中的cloud-init更改为

runcmd:
 - [ bash, /opt/cloud-init-scripts/whatever.sh ]