标签: quoting

由带引号和不带引号的部分组成的字符串中的通配符扩展(通配)

我在 shell 脚本中有一行如下所示:

java -jar "$dir/"*.jar
Run Code Online (Sandbox Code Playgroud)

,因为我只想执行该文件夹中碰巧命名的任何 jar 文件。但这并不像我预期的那样工作。我收到错误消息:

Error: Unable to access jarfile [folder-name]/*.jar
Run Code Online (Sandbox Code Playgroud)

它按字面意思使用“*”字符,而不是进行我想要的替换。我该如何解决?

编辑:它现在正在工作。我只是有错误的文件夹前缀:/对于任何想知道的人,这是正确的方法。

bash shell glob quoting shopt

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

编写一个查询来选择用单引号括起来的列

我正在尝试编写一个选择查询,该查询应返回用单引号括起来的列值。假设列 (ABC) 有

Values: 123
        567
Run Code Online (Sandbox Code Playgroud)

查询应返回

Output: '123'
        '567'
Run Code Online (Sandbox Code Playgroud)

sql postgresql quoting

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

在单引号内转义双引号内的单引号

我发出一个 curl 命令,理想情况下看起来像这样(请注意,由于缺乏转义,这是不正确的):

curl -X POST --data-urlencode 'payload={"channel": "@somebody", "text": "I'm sending you a test message. Let me know if you get it."}' https://hooks.slack.com/services/XXX
Run Code Online (Sandbox Code Playgroud)

我是单词中的单引号导致此失败。但是,我不确定如何转义此引用,因为有多个级别的嵌套引用。

作为第二个问题,如果文本字符串中有双引号怎么办?那些人怎么可能逃脱?

我已经阅读了有关转义的内容并查看了其他 SO 帖子(包括如何在单引号字符串中转义单引号?),但我似乎无法找到任何可行的解决方案。链接的帖子讨论了单引号中的单引号,并通过使用双引号解决了这个问题。但是,我的单引号已经是双引号了。所以这个比较复杂。

非常感谢你的帮助。

bash quoting

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

从cmd调用powershell命令时出错

我正在尝试将值返回到我的批处理脚本。在 powershell 中,此脚本运行良好:

PS> (Get-Date -Date "9.04.2017" -Uformat "%w.%Y-%m-%d").Replace("0.", "7.")
7.2017-04-09
Run Code Online (Sandbox Code Playgroud)

当我尝试批量时:

for /f %%a in ('powershell ^(Get-Date -Uformat "%%w.%%Y-%%m-%%d"^).Replace^(^'0.^', ^'7.^'^)') do set datestamp=%%a
echo %datestamp%
Run Code Online (Sandbox Code Playgroud)

我收到错误,但这个脚本工作正常:

for /f %%a in ('powershell ^(get-date^).DayOfWeek') do set weekday=%%a
for /f %%a in ('powershell Get-Date -Uformat "%%u.%weekday%.%%Y-%%m-%%d"') do set datestamp=%%a
echo %datestamp%
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

powershell escaping batch-file quoting

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

如何在 ssh pkill bash 命令中正确转义双引号?

$ ssh root@123.123.123.123
123.123.123.123# pkill -f "stalled process name"; commands_to_restart; some_more_commands;
many many lines of output demonstrating success
123.123.123.123# exit;
Run Code Online (Sandbox Code Playgroud)

一切正常

$ ssh root@123.123.123.123 "pkill -f "\""stalled process name"\"";"\
> "commands_to_restart; some_more_commands;";
Run Code Online (Sandbox Code Playgroud)

没有输出,什么都不做。

$ ssh root@123.123.123.123 "echo "\""pkill -f "\"\\\"\""stalled process name"\"\\\"\""; "\
> "commands_to_restart; some_more_commands;"\"";";
pkill -f "stalled process name"; commands_to_restart; some_more_commands;
Run Code Online (Sandbox Code Playgroud)

所以......报价转义的两个阶段按预期工作......

如何获得单层引号转义以使用 ssh/bash?由于引用在两层中完美运行,我觉得它与引用的关系不大,而与ssh终端处理的某些方面有关。然而,据我所知,这些命令只对标准输出进行简单和常规的 IO 操作,没有输入。

ssh bash escaping heredoc quoting

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

在 PowerShell 中嵌入双引号的正则表达式模式

需要使用 PowerShell 在文档中搜索以下关键字:

[“允许的收购清理期” 
$keyword = ""
Get-Content $SourceFileName | Select-String -Pattern $keyword
Run Code Online (Sandbox Code Playgroud)

我正在搜索的字符串中有双引号,所以我在努力如何在这个$keyword.

powershell escaping quoting

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

使用 SED 替换长字符串 - 但在正则表达式中得到未终止的替换

您好,尝试将以下字符串替换为长字符串:

@x@ 
Run Code Online (Sandbox Code Playgroud)

使用我从命令行获得的字符串:

read test    
sed -i --backup 's/@x@/'${test}'/g' file.json README.md
Run Code Online (Sandbox Code Playgroud)

但它仅适用于1 个单词,如果单词之间有空格则不起作用。即使在引号之间

sed: 1: "s/@x@/string test string: unterminated substitute in regular expression
Run Code Online (Sandbox Code Playgroud)

linux macos sed quoting

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

YAML 无效 - 可能是引号问题

我正在从Gitlab CI / CD管道的错误信息:yaml invalid。问题是由.gitlab-ci.yml脚本的第五行引起的:

   - 'ssh deployer@gitadam.ga \'rm /var/www/html/hosts/production/current/temp__*\''
Run Code Online (Sandbox Code Playgroud)

脚本部分

script:
    - 'pwd'
    - 'whoami'
    - 'ls temp__*'
    - 'ssh deployer@gitadam.ga \'rm /var/www/html/hosts/production/current/temp__*\''
    - 'if ls temp__* 1> /dev/null 2>&1; then for file in temp__*; do scp $file deployer@gitadam.ga:/var/www/html/hosts/production/current/; done; fi'
Run Code Online (Sandbox Code Playgroud)

线怎么修?

yaml quoting gitlab-ci

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

如何将 JSON(字符串数据)传递给 PowerShell?

我将以下内容作为参数传递给 powershell(w7 上的 v4):

-debugWrite -fileName SettingsFile -jsonContent { "c": "some setting", "d":  "unknown", "b": "some thing", "a": 1 }
Run Code Online (Sandbox Code Playgroud)

但是 PS 被 JSON 挂断了。我试过分隔 \double-quotes\ 并将 -jsonContent 之后的所有内容放在“单引号”中,但无济于事。

这是运行 PS 的 Windows 7 (PS4) 环境:

注意:“...”混淆指的是同一个目录。IOW,所有文件都位于同一目录中。

运行一个批处理文件,开始整个事情:

    "C:\...\script.bat" > "C:\...\script-output.txt" 2>&1
Run Code Online (Sandbox Code Playgroud)

这会运行script.bat并输出到script-output.txt. script.bat是一个长的 1-liner:

%WINDIR%\sysnative\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\...\customscript.PS1" --% -fileName DropFileToCreate -jsonContent "{     "c":  "some setting",     "d":  "unknown",     "b":  "some thing",     "a":  1 }" -debugWrite
Run Code Online (Sandbox Code Playgroud)

传奇:

DropFileToCreate - 传递给 PS 脚本的文件名,用于在同一目录中创建文件。

-jsonContent- …

syntax powershell json batch-file quoting

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

Lisp (Allegro Common Lisp) 如何使用 lambda 中的变量与 ' vs #'

我希望有人能解释为什么测试 1-5 有效但测试 6 没有。我认为用 ' 引用 lambda 并在 lambda 前面使用 #' 都返回指向该函数的指针,唯一的区别是 #' 将首先编译它。

(defun test-1 (y)
  (mapcar (lambda (x) (expt x 2))
      '(1 2 3)))

(defun test-2 (y)
  (mapcar (lambda (x) (expt x y))
      '(1 2 3)))

(defun test-3 (y)
  (mapcar #'(lambda (x) (expt x 2))
      '(1 2 3)))

(defun test-4 (y)
  (mapcar #'(lambda (x) (expt x y))
      '(1 2 3)))

(defun test-5 (y)
  (mapcar '(lambda (x) (expt x 2))
      '(1 2 3)))

(defun test-6 (y)
  (mapcar '(lambda …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp quoting

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

标签 统计

quoting ×10

bash ×3

escaping ×3

powershell ×3

batch-file ×2

common-lisp ×1

gitlab-ci ×1

glob ×1

heredoc ×1

json ×1

linux ×1

lisp ×1

macos ×1

postgresql ×1

sed ×1

shell ×1

shopt ×1

sql ×1

ssh ×1

syntax ×1

yaml ×1