Perl单行单引号

sfg*_*ups 4 shell perl quoting

我使用Perl单行创建一个SQL语句,但我不能包含单引号.

这就是我想要的:首先提交并添加引号.

echo "a,b" | perl -F',' -lane 'print $F[0];'
 'a'
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方法,但它对我不起作用.

1.

echo "a,b" | perl -F',' -lane 'print qq('$F[0]');'
[0]
Run Code Online (Sandbox Code Playgroud)

2.

echo "a,b" | perl -F',' -lane 'print q('$F[0]');'
[0]
Run Code Online (Sandbox Code Playgroud)

这是另一个有趣的.

它使用print语句打印单引号,但如果我为变量赋值并打印它不起作用.

perl -lwe "print q( i'am );"
 i'am

perl -lwe "$b=q( didn't ); print $b"
Run Code Online (Sandbox Code Playgroud)

你能帮助我理解我们如何在Perl单行中使用单引号和双引号?

dog*_*ane 17

您不能单独使用单引号.您需要使用以下方法正确地转义它们'\'':

$ echo "a,b" | perl -F',' -lane 'print "'\''$F[0]'\''";'
'a'
Run Code Online (Sandbox Code Playgroud)


Eug*_*ash 10

您需要了解shell如何处理引号.
我只想使用ASCII值':

echo "a,b" | perl -F',' -lane 'print "$F[0]\047";'
a'
Run Code Online (Sandbox Code Playgroud)

q//qq//运营商也可以在单行中使用.