|
|
1
1378
如果您真的想在最外层使用单引号,请记住,您可以粘合这两种引号。例子:
如何解释
如果不在(1)和(2)之间或(4)和(5)之间放置任何空格,shell将把该字符串解释为一个长单词。 |
|
|
2
251
我总是用序列替换每个嵌入的单引号:
我经常在Perl脚本中创建一个“quotify”函数来帮我完成这项工作。步骤如下:
当你介绍别人时,生活会变得更有趣
例如,创建一个名为quotify的Perl脚本,其中包含上述语句:
结果:
然后可以将其复制/粘贴到alias命令中:
(如果需要将命令插入eval,请再次运行quotify:
可复制/粘贴到评估:
|
|
3
181
自从巴什
2.04
语法
简单示例:
就你而言:
常见转义序列按预期工作:
以下是复制并粘贴的相关文档
形式为$'string'的单词将被特别处理。单词扩展为字符串,反斜杠转义字符按ANSI C标准替换。反斜杠转义序列(如果存在)解码如下:
扩大后的结果是单引号,似乎美元符号没有出现。
见
Quotes and escaping: ANSI C like strings
"Bash Changes"
文件(
overview here
)对于与
根据unix.stackexchange.com How to use a special character as a normal one? 它应该在bash、zsh、mksh、ksh93、FreeBSD和busybox sh中工作(有一些变体)。 |
|
|
4
49
|
|
|
5
29
我可以确认使用
|
|
|
6
17
这两个版本都可以工作,要么使用转义单引号字符(\')进行连接,要么将单引号字符括在双引号(“')中进行连接。
正如您在前面的ASCII/Unicode艺术中看到的,最后一个转义的单引号(\')后面跟着一个不必要的单引号(')。使用像Notepad++中的语法高亮器可以证明是非常有用的。 另一个例子也是如此,如下所示:
|
|
|
7
16
shell中转义引号的简单示例:
完成了,已经打开了一个(
|
|
|
8
15
你可以称之为:
我们的想法是,您现在可以将其命名,而不必考虑引号:
你可以称之为:
当然,别名是:
(哎呀,我想我确实是在引用:) |
|
|
9
10
我只是用外壳代码。。例如
|
|
|
10
9
由于不能将单引号放在单引号字符串中,所以最简单、最可读的选项是使用HEREDOC字符串
在上面的代码中,HEREDOC被发送到
|
|
|
11
6
这些答案大多是针对你所问的具体案例。我和一位朋友开发了一种通用方法,允许在需要通过多层shell扩展(例如,通过ssh)引用bash命令时任意引用,
这正是它所说的:它shell分别引用每个参数(当然,在bash扩展之后):
它对一层膨胀有明显的作用:
(注意
简而言之,这是个主意。你可以用这个做一些非常复杂的事情,但是你必须小心计算的顺序和引用的子字符串。例如,以下行为是错误的(对于“错误”的某些定义):
如果试图简单地转义shell运算符,则会失败,因为结果字符串传递给
问题是你的报价太高了。您需要的是将运算符取消引号,作为封闭的输入
因此,在最一般的意义上,您需要做的是对命令替换时不打算单独展开的命令的每个字进行shell引用,并且不对shell运算符应用任何额外的引用:
完成此操作后,整个字符串对于进一步引用任意级别的求值是公平的:
等。
这些例子似乎过于夸张了
为了更好地了解封面下的内容,您可以使用两个小助手函数:
|
|
|
12
6
真正的答案是,不能在单引号字符串中转义单引号。 这是不可能的。 如果我们假设我们在使用bash。
您需要使用其他字符串转义机制之一“或\
没有什么神奇的
后者使用\转义空格字符。 111111也不需要单引号。 以下选项与其他两个选项获得相同的结果,因为rxvt别名可以按预期工作。
|
|
|
13
4
在给定的示例中,只使用双引号而不是单引号作为外部转义机制:
这种方法适用于许多只想向命令传递固定字符串的情况:只需检查shell将如何通过
|
|
|
14
3
以下是对上述一个真实答案的阐述: 有时我会通过ssh使用rsync下载,并且必须在文件名中转义两次'!(天啊!)一次用于bash,一次用于ssh。在这里,交替使用引号分隔符的原理也是一样的。 例如,假设我们想得到:路易斯·塞鲁克斯的洛杉矶故事。。。
对一个孩子来说,这是一项非常艰巨的工作,但是你可以 |
|
|
15
3
实施说明:
P、 总是编码为单引号字符串,因为它们比双引号字符串简单得多。 |
|
16
2
你想把太多的东西塞进太小的空间,所以使用bash函数。
然后,您可以使用$1和$2变量、单引号、双引号和反勾号,而不用担心别名函数会破坏它们的完整性。
|
|
|
17
2
显然,简单地用双引号括起来会更容易些,但其中的挑战在哪里呢?这是只使用单引号的答案。我用变量代替
关键是,你可以关闭单引号,并重新打开它的次数,因为你想。例如
故障图
这个图表通过使用括号来显示单引号的打开和关闭位置,使之更加清晰。引号不是像圆括号那样的“嵌套”。您还可以注意正确应用的颜色突出显示。引用的字符串是栗色的,而
|
|
18
2
如果安装了GNU Parallel,则可以使用其内部引用:
它将引用所有支持的shell中的字符串(不仅是
|
|
|
19
1
此函数:
将输出:
所有在单引号中正确引用的字符串。 |
|
|
20
1
这将输出:
|
|
|
21
1
这是我的两分钱--如果有人想的话
# this works with standard input (stdin)
quote() {
echo -n "'" ;
sed 's/\(['"'"']['"'"']*\)/'"'"'"\1"'"'"'/g' ;
echo -n "'"
}
case "$1" in
-) quote ;;
*) echo "usage: cat ... | quote - # single-quotes input for Bourne shell" 2>&1 ;;
esac
例如: $ echo -n "G'day, mate!" | ./quote.sh - 'G'"'"'day, mate!' 当然,这也会让你回头: $ echo 'G'"'"'day, mate!' G'day, mate!
说明:
基本上我们必须用引号将输入括起来
一个标准的方法就是
不过,一个小问题是,为了在shell中使用它,需要在sed表达式本身中转义所有这些单引号字符——这会导致
(构建此结果的一个好方法是提供原始表达式
最后,期望输入来自
|
|
22
0
这是另一个解决方案。此函数将接受一个参数,并使用单引号字符对其进行适当的引号,正如上面的投票答案所解释的:
|