标签: quoting

解析HTTP标头值:引用,RFC 5987,MIME等

令我困惑的是解码HTTP标头.

示例标题:
Some-Header: "quoted string?"; *utf-8'en'Weirdness

可以引用标题吗?那么自己的编码怎么样"?是'一个有效的引用字符?分号(;)的意义是什么?HTTP标头的值解析器是否可以被视为MIME解析器?

我正在制作一个透明的代理,需要透明地处理和修改许多野外的头字段.这就是为什么我需要这么多关于格式的细节.

unicode mime quoting http-headers

6
推荐指数
1
解决办法
2003
查看次数

使用反引号时,Bash会抱怨here-document中的语法错误

我正在运行以下一段bash代码:

cat << END_TEXT
       _             _ 
      | |           | |
  __ _| |__   ___ __| |
 / _` | '_ \ / __/ _` |
| (_| | |_) | (_| (_| |
 \__,_|_.__/ \___\__,_|
END_TEXT
Run Code Online (Sandbox Code Playgroud)

并收到一个错误:

bash: command substitution: line 1: syntax error near unexpected token `|'
bash: command substitution: line 1: ` | '_ \ / __/ _'
Run Code Online (Sandbox Code Playgroud)

bash quoting cat backticks

6
推荐指数
1
解决办法
36
查看次数

在带空格的路径上使用Make $(dir)或$(notdir)

我在Makefile中使用类似于以下的代码:

empty:=
space:= $(empty) $(empty)
path_escape = $(subst $(space),\$(space),$(1))

TOP=$(call path_escape,$(abspath .))
TARGET=$(TOP)/foo

$(info TOP='$(TOP)')
$(info TARGET='$(TARGET)')

all: $(TARGET)

$(TARGET):
    touch '$(notdir $@)'

.PHONY: $(TARGET)
Run Code Online (Sandbox Code Playgroud)

如果我在没有空格的目录中使用space-test它,比如说,它可以正常工作:

$ make
TOP='/tmp/space-test'
TARGET='/tmp/space-test/foo'
touch 'foo'
Run Code Online (Sandbox Code Playgroud)

但是,如果我在一个带空格的目录中使用它,比如说space test,那就$(notdir)错了:

TOP='/tmp/space\ test'
TARGET='/tmp/space\ test/foo'
touch 'space foo'
Run Code Online (Sandbox Code Playgroud)

这里发生的事情是$(notdir)解释/tmp/space test/foo2路和返回的"文件部分" (即,spacefoo).这个奇怪的部分TARGET是正确逃脱的; 不知何故,在规则内部或内部$(notdir),反斜杠转义被忽略.

我在这做错了什么?

makefile path quoting

5
推荐指数
1
解决办法
1万
查看次数

在命令中使用变量(PowerShell)

$computer = gc env:computername

# Argument /RU '$computer'\admin isn't working.
SchTasks /create /SC Daily /tn "Image Verification" /ST 18:00:00 /TR C:\bdr\ImageVerification\ImageVerification.exe /RU '$computer'\admin /RP password
Run Code Online (Sandbox Code Playgroud)

基本上我需要在计划任务中提供计算机名称...

先感谢您!

variables powershell quoting string-interpolation

5
推荐指数
1
解决办法
1万
查看次数

使用Python将包含双引号的参数传递给子流程

我正在寻找一种将包含双引号的参数传递给python的子进程模块的方法,而不会将双引号转义。

当引号围绕arg时,我已经看到过几次不同的问题,但是答案通常是删除引号。我遇到的问题是引号是参数的一部分,必须传递给脚本,而不必在每个引号前加反斜杠

例:

我正在调用subprocesTest.bat,这是一个简单的批处理脚本,它接受一个参数并回显它:

echo "%~1"
Run Code Online (Sandbox Code Playgroud)

我使用包含引号的arg从python调用批处理脚本:

import subprocess
test_string = 'Bill said "Hi!"'
cmd = ["subprocesTest.bat",
       test_string
       ]

p = subprocess.Popen(cmd)
p.wait()
Run Code Online (Sandbox Code Playgroud)

预期输出:

“比尔说:“嗨!”

实际输出:

“比尔说\“嗨!\”

从命令行调用相同的批处理脚本时,我可以得到预期的输出,如下所示:

subprocesTest.bat“比尔说”嗨!“

查看源代码,subprocess.py的list2cmdline函数记录为:

 3) A double quotation mark preceded by a backslash is
   interpreted as a literal double quotation mark.
Run Code Online (Sandbox Code Playgroud)

但是,如果我逐步执行此功能,则看不到不加反斜杠就不能传递双引号的方法:

        elif c == '"':
            # Double backslashes.
            result.append('\\' * len(bs_buf)*2)
            bs_buf = []
            result.append('\\"')
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题...

  • 是否可以将arg传递给包含双引号且不带反斜杠的子流程
  • 如果不可能,有人可以向我解释为什么这样设计功能吗?函数的doc字符串中的第3项似乎表明我可以通过在反斜杠前加上反斜杠来传递文字引号,但这不会产生我想要的行为。我看错文档了吗?

这是询问此问题的其他线程,并且通过不使用引号来解决:

我实际上想在引数中使用引号的情况下,我看不到任何回应

python quotes subprocess quoting double-quotes

5
推荐指数
1
解决办法
7249
查看次数

使用 Python 的 QUOTE_NONNUMERIC 导入 csv 无法按预期工作

我无法弄清楚这一点,也许我因为长期关注同样的东西而变得盲目......

我在 CSV 文件中有这样的行:

""BIN"",""Afg"",""SONIC/SONIC JET/"",1,8.9095,""Due to the dynamic nature of the exemptions granted to many operators, the Contract Price does not reflect V.A.T. / G.S.T., Mineral Oil Taxes, Federal Excise Taxes or other taxes to which an operator may be exempt.  Please contact your salesperson or World Fuel Services if you require assistance in generating a fuel price estimate."",""N/A"",""01-NOV-2013"
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样导入:

data = csv.DictReader(open(newdatafile), delimiter=',', quoting=csv.QUOTE_NONNUMERIC)
data.fieldnames = [
    'iata', 'country', 'fbo', 'quantity', 'price', 'remarks', 'special', 'validdate'
]

for row …
Run Code Online (Sandbox Code Playgroud)

python csv quoting double-quotes

5
推荐指数
1
解决办法
2万
查看次数

R data.table:重用聚合

我想将相同的聚合应用于多个数据表,而不重写聚合方案.

考虑

dt1 <- data.table(id = c(1,2), a = rnorm(10), b = rnorm(10), c = rnorm(10))
dt2 <- data.table(id = c(1,2), a = rnorm(10), b = rnorm(10), c = rnorm(10))

dt1_aggregates <- dt1[, .(mean_a=mean(a), sd_a=sd(a), mean_b=mean(b), sd_b=sd(b)), by=id]
dt2_aggregates <- dt2[, .(mean_a=mean(a), sd_a=sd(a), mean_b=mean(b), sd_b=sd(b)), by=id]
Run Code Online (Sandbox Code Playgroud)

有没有办法为dt2重用dt1_aggregates聚合方案而不必将其写出两次?

expression aggregate r quoting data.table

5
推荐指数
1
解决办法
73
查看次数

我需要引用命令替换吗?

根据Google Shell Style Guide,我应该:

除非需要仔细的不引用扩展,否则始终引用包含变量,命令替换,空格或shell元字符的字符串.

也许我误解了"命令替换"的含义,但我想知道是否需要在以下示例中使用引号:

VAR="$(echo foo bar)"
Run Code Online (Sandbox Code Playgroud)

bash shell quoting

5
推荐指数
2
解决办法
867
查看次数

Ansible:如何修复 to_nice_yaml 输出引用和换行符?

我有这个 YAML 文件(我将我的问题精简到最低限度):

scalar: simple_value
empty:
list:
  - 1
  - 2
  - 3
complex:
  - first:
      one: 1
      two: 2
  - second:
      one: 3
      two: 4
weird: "{{ '{{' }} something {{ '}}' }}"
weirder: "{{ '{{' }} 'TTT' if something == 'blah' else 'FFF' {{ '}}' }}"
weirdest: "&lcub2; ansible_date_time.year &rcub2;.&lcub2; ansible_date_time.month &rcub2;.&lcub2; ansible_date_time.day &rcub2;"
Run Code Online (Sandbox Code Playgroud)

和这个剧本:

---
- hosts: localhost
  tasks:
    - name: Load
      include_vars:
        file: ./vars.yml
        name: object
    - name: Write
      copy:
        content: "{{ object | …
Run Code Online (Sandbox Code Playgroud)

yaml escaping line-breaks quoting ansible

5
推荐指数
1
解决办法
1万
查看次数

导出值包含空格的环境文件

我正在使用环境文件来配置网络应用程序。最近我需要导出这样的值:

RUBYOPT='-W:no-derecated -W:no-experimental'
Run Code Online (Sandbox Code Playgroud)

test.env它包含在具有其他配置变量的文件中。

我使用此命令导出文件中的所有环境变量:

export $(cat test.env | xargs)
Run Code Online (Sandbox Code Playgroud)

使用上面的值,该命令会给出以下错误:

-bash: export: `-W:no-experimental'': not a valid identifier
Run Code Online (Sandbox Code Playgroud)

我可以通过复制粘贴输出来导出值,cat test.env | xargs但在像上面这样的单个命令中它不起作用。

一些测试表明,当值包含空格及其后的冒号时,就会出现问题:

我需要什么样的引用魔法才能使我的环境文件再次工作?

bash shell environment-variables quoting command-line-arguments

5
推荐指数
1
解决办法
3797
查看次数