通过脚本运行Bash脚本失败

时间:2019-01-08 21:28:09

标签: bash

这些命令作为脚本运行时失败,并显示错误:

  

/etc/nginx/.htpasswd:没有这样的文件或目录

sudo touch /etc/nginx/.htpasswd
hash="$(echo -n "$MD5Password" | md5sum )"
echo "${ApplicationUserName}:$hash" >> /etc/nginx/.htpasswd

但是,当我一次手动执行它们时,它们就可以正常工作。

完整代码:

#!/bin/bash -x
yum -y update
yum install -y aws-cfn-bootstrap
yum install httpd-tools -y
echo
/opt/aws/bin/cfn-init --verbose --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
sudo touch /etc/nginx/.htpasswd
hash="$(echo -n "$MD5Password" | md5sum )"
echo "${ApplicationUserName}:$hash" >> /etc/nginx/.htpasswd

这是我在AWS Cloudformation模板中传递的用户数据的一部分。

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

发生错误消息是因为/etc/nginx目录不存在。更改为:

mkdir -p /etc/nginx
touch /etc/nginx/.htpasswd

应该没事的。

如评论中所述,在那里不需要或不建议使用sudo,因此我将其删除。

  

但是,当我一次手动执行它们时,它们就可以正常工作。

那是不可能的。在脚本或构建过程的后期,但在您手动尝试这些命令之前,必须先创建/etc/nginx目录。也许以后再安装nginx rpm吗?