代码之家  ›  专栏  ›  技术社区  ›  Shabbir Bata

bash脚本在通过脚本运行时失败

  •  0
  • Shabbir Bata  · 技术社区  · 6 年前

    这些命令在作为脚本运行时失败,并出现错误:

    /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 回复  |  直到 5 年前
        1
  •  0
  •   Alex Harvey    6 年前

    出现错误消息的原因是 /etc/nginx 目录不存在。更改为:

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

    应该没事的。

    如评论中所述,sudo在那里不是必需的或推荐的,所以我删除了它。

    然而,当我一次一个地手动执行它们时,它们工作得很好。

    那是不可能的。一定有别的东西在创造 /ETC/NGNX 目录稍后在脚本或生成过程中,但在手动尝试这些命令之前。也许你安装了 nginx 也许以后再转?