如何修复Powershell去除文件中的双引号

时间:2019-04-11 13:22:38

标签: powershell docker

我在Windows powershell中像这样定义变量

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*?\/)*?([a-z\.\-]+)(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1$2$4 [NC]

    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA,NC]

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Port} !=443
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</ifmodule>

# Example to cache images and CSS files
# adjust and extend to your needs
<ifModule mod_headers.c>
  #  images expire after 1 week
  <filesMatch ".(gif|png|jpg|jpeg|ico|pdf|svg|js)$">
    Header set Cache-Control "max-age=604800"
  </filesMatch>
  # CSS expires after 1 week
  <filesMatch ".(css|js|woff2)$">
    Header set Cache-Control "max-age=604800"
  </filesMatch>
</ifModule>

运行此命令后,当我查看docker容器中的许可证文件时,它将删除双引号。

当我从docker容器中检查时,这就是我看到的。如果您在下面看到引号,则将其删除。

1.$LFILE=cat license.json
2.echo $LFILE
   {
    "source": "ABCD LTD",
    "clientId": "EAL",
    "details": "Lenses",
    "key": "acfghkjhadasldas"
   }

3.docker run --rm -d -p 3030:3030 -e LICENSE=$LFILE landoop/kafka-lenses-dev:latest

我试图将$ LFILE用单引号和双引号引起来。 我试图像这样将文件名直接放在docker命令中。仍然没有运气。

root@fast-data-dev / $ cat /var/run/lenses/license.conf
{
  source: ABCD LTD,
  clientId: EAL,
  details: Lenses,
  key: acfghkjhadasldas 
}

io.lenses.core.license.LicenseException: Can not read the license 
file:/var/run/lenses/license.conf

2 个答案:

答案 0 :(得分:0)

仅使用“ cat”命令将返回一个Object []。我假设码头工人正在寻找一个字符串。要获取字符串,请使用以下之一。

$LFILE = Get-Content license.json -Raw

$LFILE = cat license.json -Raw

因为您正在运行Kafka,所以我为此查找了许可配置。他们说的是以下话:

  

为了运行,Lenses需要一个许可证文件,该文件可以获取   从我们这里。收到许可证后,将其存储在文件中(   (即license.file)并更新配置以指向它。使   确保配置值包含完整的文件路径。

# License file allowing connecting to up to N brokers
lenses.license.file="license.json"

根据您当前的docker命令,您正在尝试为许可证设置环境变量。看来,您需要在容器中放入一个文件,然后设置lens.license.file =“ full / license / file / path / license.json”

似乎您需要运行如下所示的内容,但这只是在寻找密钥,而不是整个文件。

docker run -p 3030:3030 -e EULA="CHECK_YOUR_EMAIL_FOR_KEY" \ --name=lenses-dev landoop/kafka-lenses-dev

Lenses Documentation v2.3

答案 1 :(得分:0)

我不熟悉Docker许可证的格式要求,但是如果您需要在其中使用双引号,为什么不捷径您所拥有的内容,而只是按照需要的方式显式创建变量?

$LFILE = '{
    "source": "ABCD LTD",
    "clientId": "EAL",
    "details": "Lenses",
    "key": "acfghkjhadasldas"
   }'

-或者应该-

$LFILE = '"source": "ABCD LTD",
    "clientId": "EAL",
    "details": "Lenses",
    "key": "acfghkjhadasldas"'

-然后-

## TEST AND ENSURE THE VARIABLE IS FORMATTED CORRECTLY ##
$LFILE

## NOW ADD IT TO YOUR COMMAND AND EXECUTE ##
docker run --rm -d -p 3030:3030 -e LICENSE=$LFILE landoop/kafka-lenses-dev:latest