标签: quotes

从批处理文件中的变量中删除双引号会导致CMD环境出现问题

任何人都可以帮助有效和安全地从批处理变量中删除引号吗?

我编写了一个批处理文件,它成功导入参数列表%1,%2,%3等,并将它们放入命名变量中.其中一些参数包含多个单词,因此用双引号括起来.

> "Susie Jo" (%1)  
> "Smith Barnes" (%2)  
> "123 E. Main St." (%3)  
Run Code Online (Sandbox Code Playgroud)

接下来将这些%变量放在命名变量中:

> set FirstName=%1  
> set LastName=%2  
> set ShipAddr=%3  
Run Code Online (Sandbox Code Playgroud)

变量验证由echo完成.

echo.%FirstName%
echo.%LastName%
echo.%ShipAddr%

结果显示为

"Susie Jo"  
"Smith Barnes"  
"123 E. Main St."  
Run Code Online (Sandbox Code Playgroud)

我需要消除所选变量的包含引号.例如,FirstName和LastName在别处使用,不得包含引号.

在测试批处理文件中,我成功地使用变量中的~tilde字符来消除引号.

> set FirstName=%~1
> set LastName=%~2 
Run Code Online (Sandbox Code Playgroud)

我以为我有解决方案,但我很快就遇到了执行批处理文件的异常行为.突然间,CMD无法识别长路径的声明.从完整路径正常执行批处理文件

> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
Run Code Online (Sandbox Code Playgroud)

回报

> 'C:\Documents' is not recognized as an internal or external command....
Run Code Online (Sandbox Code Playgroud)

因此,似乎在即将到来的%1%2 ...%n变量中添加了〜tilde字符已经引起了一些变化.可能有些环境变量已被改变?

我还尝试使用FOR命令通过各种尝试清除变量中的引号.这似乎很尴尬,我无法通过创建执行任务的变量列表来学习如何实现这一目标:

这样的事情:

for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h …
Run Code Online (Sandbox Code Playgroud)

variables quotes cmd batch-file

110
推荐指数
6
解决办法
15万
查看次数

如何在Java字符串中输入引号?

我想在Java中初始化一个String,但该字符串需要包含引号; 例如:"ROM".我试过做:

String value = " "ROM" ";
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如何"在字符串中包含s?

java string quotes escaping

99
推荐指数
7
解决办法
40万
查看次数

如何在MySQL中转义单引号

如何在MySQL中插入由单引号或双引号组成的值.即

This is Ashok's Pen.
Run Code Online (Sandbox Code Playgroud)

单引号会产生问题.可能还有其他转义字符.

如何正确插入数据?

mysql string quotes

92
推荐指数
8
解决办法
22万
查看次数

在批处理脚本中转义双引号

如何使用转义双引号替换批处理文件参数中的所有双引号?这是我当前的批处理文件,它扩展了字符串中的所有命令行参数:

@echo off
call bash --verbose -c "g++-linux-4.1 %*"
Run Code Online (Sandbox Code Playgroud)

然后它使用该字符串调用Cygwin的bash,执行Linux交叉编译器.不幸的是,我将这些参数传递给我的批处理文件:

"launch-linux-g++.bat" -ftemplate-depth-128 -O3 -finline-functions 
-Wno-inline -Wall  -DNDEBUG   -c 
-o "C:\Users\Me\Documents\Testing\SparseLib\bin\Win32\LinuxRelease\hello.o" 
"c:\Users\Me\Documents\Testing\SparseLib\SparseLib\hello.cpp"
Run Code Online (Sandbox Code Playgroud)

传入第一个路径的第一个引用是过早地结束传递给GCC的字符串,并将其余参数直接传递给bash(这非常失败.)

我想如果我可以将参数连接成一个单独的字符串然后转义它应该正常工作的引号,但我很难确定如何做到这一点.有人知道吗?

parameters quotes scripting escaping batch-file

84
推荐指数
4
解决办法
13万
查看次数

如何在Bash中的带引号的字符串中使用环境变量

我在bash脚本中尝试了以下各种形式:

#!/bin/bash
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

但我无法获得正确扩展COLUMNS环境变量的语法.

我尝试了以下各种形式:

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS'
Run Code Online (Sandbox Code Playgroud)

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}'
Run Code Online (Sandbox Code Playgroud)

eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

建议?

bash environment quotes

82
推荐指数
4
解决办法
15万
查看次数

什么是'$$'用于PL/pgSQL

作为PL/pgSQL的新手,这个函数中双美元符号的含义是什么:

CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS $$
BEGIN
  IF NOT $1 ~  e'^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$' THEN
    RAISE EXCEPTION 'Wrong formated string "%". Expected format is +999 999';
  END IF;
  RETURN true; 
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
Run Code Online (Sandbox Code Playgroud)

我猜,在RETURNS boolean AS $$,$$是一个占位符.

最后一行有点神秘: $$ LANGUAGE plpgsql STRICT IMMUTABLE;

顺便说一句,最后一行是什么意思?

postgresql quotes plpgsql dollar-sign dollar-quoting

82
推荐指数
2
解决办法
3万
查看次数

带引号的bash正则表达式?

以下代码

number=1
if [[ $number =~ [0-9] ]]
then
  echo matched
fi
Run Code Online (Sandbox Code Playgroud)

作品.但是,如果我尝试在正则表达式中使用引号,它会停止:

number=1
if [[ $number =~ "[0-9]" ]]
then
  echo matched
fi
Run Code Online (Sandbox Code Playgroud)

我也试过"\[0-9\]"了.我错过了什么?

有趣的是,bash高级脚本指南表明这应该有效.

Bash版本3.2.39.

regex bash quotes

72
推荐指数
4
解决办法
3万
查看次数

Ruby的%q /%Q引用方法的用例是什么?

我一直在阅读托马斯的编程Ruby 1.9,并发现了替代定界的单引号和双引号方法(%q / %Q).我也从其他Ruby语言参考中了解它们.

%q/I'm acting like a single-quoted string/

%Q|"I'm acting like a double-quoted string" --Anonymous|
Run Code Online (Sandbox Code Playgroud)

我没有使用Ruby很长时间,但我从未在生产代码中遇到过这种引用方法.

除了明显的避免内部使用反斜杠转义引号的能力之外,这种引用常规单引号还是双引号的方法有哪些常见用例?它们通常用于单行还是多行字符串?如果在多行字符串中使用,它们是否比HEREDOC字符串更受青睐?是否有一个特殊的Ruby成语,它们常见于何处?

ruby string quotes

70
推荐指数
3
解决办法
4万
查看次数

如何在Bash参数中保留引号?

我有一个Bash脚本,我想在传递的参数中保留引号.

例:

./test.sh this is "some test"
Run Code Online (Sandbox Code Playgroud)

然后我想使用这些参数,并重用它们,包括整个参数列表的引号和引号.

我尝试使用\"$@\",但删除了列表中的引号.

我该如何做到这一点?

bash quotes

69
推荐指数
10
解决办法
7万
查看次数

当字符串周围的引号不匹配时,为什么 Python 不会给出任何错误?

我最近开始学习 Python,我不明白为什么 Python 会这样:

>>> “好的”
'好的'
>>> """好的"""
'好的'
>>>“不好”
  文件“<stdin>”,第 1 行
    “不好'
           ^
语法错误:扫描字符串文字时 EOL
>>> "不行"""
'不好'

由于引号的数量不匹配,为什么最后一条语句不会出错?

python string quotes python-3.x

67
推荐指数
3
解决办法
5292
查看次数