Bash报价很棘手

时间:2016-08-05 16:52:50

标签: bash

我有这个命令

aws --profile "" ec2 describe-instances

短篇小说是我别无选择,只能在此命令中使用'--profile'部分,但我需要能够使用引号来使用此功能/错误:

aws --profile $AWS_PROFILE ec2 describe-instances

但引号也必须是环境变量,如此

AWS_PROFILE='""'

但是我需要该变量来解析与它上面的行完全相同的方式。 我试过了

AWS_PROFILE=

AWS_PROFILE=""

<%-- 
Document   : ctsDownloadDocuments
Created on : 5 Aug, 2016, 2:18:17 PM
Author     : Admin
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html>
<html>
<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">



</head>

<body>
            <form>
                                        <div class="row">
                                            <div class="col-lg-25">
                                                <div class="panel panel-success" style="width: auto;" >
                                                    <div class="panel-heading" style="width: auto;" >
                                                        <h3 class="panel-title" style="width: auto;"  ><i class="fa fa-money fa-fw"></i> Case History</h3>
                                                    </div>
                                                    <div style="overflow:scroll;height:400px;width:auto; overflow:auto">
                                                        <table class="table table-bordered table-hover table-striped" id="example" class="display" cellspacing="0" width="100%">
                                                            <thead>
                                                                <tr>


                                                                    <th>FileName</th>

                                                                                                                                        </tr>
                                                            </thead>

                                                            <tbody>
                                                                <c:forEach items="${casedocuments}" var="casedocument">
                                                                    <tr>

                                                                        <td><a href="CaseDocumentController?action=download&FileName=<c:out value="${casedocument.cdd_DocumentName}"/>">Download</a></td>


                                                                    </tr>
                                                                </c:forEach>
                                                            </tbody>
                                                        </table>
                                                    </div>  
                                                </div>
                                            </div>
                                        </div>


                                                                    </form>

                    </div>




</body>

它永远不会以同样的方式解决。我有什么可以做的吗?

1 个答案:

答案 0 :(得分:4)

您在变量中添加的任何引号都是 literal 。但是,在您想要的命令aws --profile "" ec2 describe-instances中,引号是 syntactic :也就是说,它们是 shell语法,用于描述shell将如何创建要传递给execv系统调用的C字符串的文字数组(以及其中一个字符串需要为空);引号实际上并未传递给aws命令。

所以:

AWS_PROFILE=
aws --profile "$AWS_PROFILE" ec2 describe-instances

...的行为与

完全相同
aws --profile "" ec2 describe-instances