精华内容
下载资源
问答
  • 举例如下who命令输出第一列(1)第一种情况不使用引号# i=1;who | awk '{print $${i}}'输出如下:awk: {print $${i}}awk: ^ syntax errorawk: {print $${i}}awk: ^ syntax error(2)第二种情况使用引号# i=1;who | ...

    举例如下

    who命令输出第一列

    (1)第一种情况不使用引号

    # i=1;who | awk '{print $${i}}'

    输出如下:

    awk: {print $${i}}

    awk:          ^ syntax error

    awk: {print $${i}}

    awk:             ^ syntax error

    (2)第二种情况使用双引号

    # i=1;who | awk '{print $"${i}"}'

    输出如下:

    root     pts/0        2016-05-24 23:02 (acab0081.ipt.aol.com)

    root     pts/1        2016-05-24 23:36 (acab0081.ipt.aol.com)

    输出了所有列,不是我们想要的第一列

    (3)正确的做法是使用单引号''

    # i=1;who | awk '{print $'${i}'}'

    正确输出如下:

    root

    root

    总结:在awk命令中引用变量须使用单引号'',如'${i}'

    展开全文
  • 在我们编写bash脚本,有时可能因为仅仅少了一个双引号引用而使我们大费周折,调试半天。所以,建议在使用变量加上一个双引号,无论在哪里使用,这可以避免一些不必要的麻烦,使调试陷入困境。具体看下面的代码:...

    在我们编写bash脚本时,有时可能因为仅仅少了一个双引号引用而使我们大费周折,调试半天。所以,建议在使用变量时加上一个双引号,无论在哪里使用,这可以避免一些不必要的麻烦,使调试陷入困境。具体看下面的代码:

    1、从SQLite中检索数据

    [root@vm3 ~]# cat t.sh

    #!/bin/bash

    sql="select count(*) from user"

    ret=$(/usr/bin/sqlite3 /root/test.db $sql)

    if [ $ret -eq 0 ];then

    echo 'no record'

    else

    echo "total $ret records"

    fi

    这是一段比较简单和常见的代码格式,抱着很自信的态度运行它看看

    [root@vm3 ~]# ./t.sh

    SQL error: near "select": syntax error

    ./t.sh: line 5: [: -eq: unary operator expected

    total records

    结果不是我们预期的,出现了n多错误,这就是变量不加引号的结果,我们改之,如下:

    [root@vm3 ~]# cat t.sh

    #!/bin/bash

    sql="select count(*) from user"

    ret=$(/usr/bin/sqlite3 /root/test.db"$sql")

    if [ "$ret" -eq 0 ];then

    echo 'no record'

    else

    echo "total $ret records"

    fi

    我在变量的两边加了双引号,红色的部分。再次运行看看

    [root@vm3 ~]# ./t.sh

    total 2 records

    ok了,如我们预期了

    2、用bash脚本显示目录文件列表

    这是一个再简单不过的代码了,可是会让很多新手不知所措,看代码:

    [root@vm3 ~]# cat t.sh

    #!/bin/bash

    list=$(ls -l /boot)

    echo $list

    仅有2行代码,是不是很简单啊!运行之

    [root@vm3 ~]# ./t.sh

    总计 5956 -rw-r--r-- 1 root root 65937 2009-08-19 config-2.6.18-164.el5 drwxr-xr-x 2 root root 4096 12-23 19:14 grub -rw------- 1 root root 2703784 2012-04-20 initrd-2.6.18-164.el5.img -rw-r--r-- 1 root root 108707 2009-08-19 symvers-2.6.18-164.el5.gz -rw-r--r-- 1 root root 1225101 2009-08-19 System.map-2.6.18-164.el5 -rw-r--r-- 1 root root 1932316 2009-08-19 vmlinuz-2.6.18-164.el5

    结果出来了,每个文件和目录都粘连在一起了(空格分隔),不是我们想要的。为什么直接使用ls命令就没有这个问题呢?

    [root@vm3 ~]# ls -l /boot

    总计 5956

    -rw-r--r-- 1 root root 65937 2009-08-19 config-2.6.18-164.el5

    drwxr-xr-x 2 root root 4096 12-23 19:14 grub

    -rw------- 1 root root 2703784 2012-04-20 initrd-2.6.18-164.el5.img

    -rw-r--r-- 1 root root 108707 2009-08-19 symvers-2.6.18-164.el5.gz

    -rw-r--r-- 1 root root 1225101 2009-08-19 System.map-2.6.18-164.el5

    -rw-r--r-- 1 root root 1932316 2009-08-19 vmlinuz-2.6.18-164.el5

    这是因为我们输出变量的时候没有使用双引号,变量代表的所有内容直接暴露给shell,就是参数替换,形如:

    echo 总计 5956 -rw-r--r-- 1 root root 65937 2009-08-19 config-2.6.18-164.el5 drwxr-xr-x 2 root root 4096 12-23 19:14 grub -rw------- 1 root root 2703784 2012-04-20 initrd-2.6.18-164.el5.img -rw-r--r-- 1 root root 108707 2009-08-19 symvers-2.6.18-164.el5.gz -rw-r--r-- 1 root root 1225101 2009-08-19 System.map-2.6.18-164.el5 -rw-r--r-- 1 root root 1932316 2009-08-19 vmlinuz-2.6.18-164.el5

    所有的多个空格被一个空格代替,所有的换行被删除。要完全保留变量内容,我们就得使用双引号将其引起来,如下:

    [root@vm3 ~]# cat t.sh

    #!/bin/bash

    list=$(ls -l /boot)

    echo"$list"

    注意红色的引号,我们再次运行

    [root@vm3 ~]# ./t.sh

    总计 5956

    -rw-r--r-- 1 root root 65937 2009-08-19 config-2.6.18-164.el5

    drwxr-xr-x 2 root root 4096 12-23 19:14 grub

    -rw------- 1 root root 2703784 2012-04-20 initrd-2.6.18-164.el5.img

    -rw-r--r-- 1 root root 108707 2009-08-19 symvers-2.6.18-164.el5.gz

    -rw-r--r-- 1 root root 1225101 2009-08-19 System.map-2.6.18-164.el5

    -rw-r--r-- 1 root root 1932316 2009-08-19 vmlinuz-2.6.18-164.el5

    ok,按照我们的预期输出了,大功告成!0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 首先向马哥和马哥团队敬个礼,谢谢你们带我进入Linux的世界,刚开始接触linux,经常看到单引号、双引号和反引号特殊符号,经常搞混淆和误用,应该用双引号,有时用到单引号。经过几天的混乱引用,总算搞明白了一些...

    首先向马哥和马哥团队敬个礼,谢谢你们带我进入Linux的世界,刚开始接触linux时,经常看到单引号、双引号和反引号特殊符号,经常搞混淆和误用,应该用双引号,有时用到单引号。经过几天的混乱引用,总算搞明白了一些,简单总一下三者的使用和区别。

    单引号 ‘’

    单引号里的内容全部以普通字符的含义进行文本使用和解释,不管是特殊字$,还是转义字符\,它关闭了Shell中所有特殊符号使用和解释。例如:

    3c8ce6380daa33c267ccb0e2e66a02de.png

    1.给变量name赋值stone

    2.echo '$name'返回值:$name

    3.完全引用单引号的内容

    双引号 “”

    它关闭了Shell中大部的特殊符号,但保留了某些,比如$,转义符\;反引号字符和单引号字符在双引号中作为普通字符,不具备特殊功能和作用。例如:

    3c8ce6380daa33c267ccb0e2e66a02de.png

    1.还是给变量name赋值stone

    2.echo "$name"

    3.此时输出name的值为stone。

    反引号“

    反引号最容易让我搞错,直到后面看到马哥写Shell语句多了才明白,反引里面的字符串必须是能执行的命令,否则会出错;它的作用是命令替换,将其中的字符串当成Shell命令执行,返回命令的执行结果;例如:

    3c8ce6380daa33c267ccb0e2e66a02de.png

    echo `date +%Y%m%d`显示今天的日期,假如反引号中的字符品不是能执行的命令就会报错,如下图:

    3c8ce6380daa33c267ccb0e2e66a02de.png

    提示stone命令没有找到,因为系统没有stone这条命令。另外$()和“的功能作用有同样的效果。

    原创文章,作者:stoneguo,如若转载,请注明出处:http://www.178linux.com/6644

    展开全文
  • Python 在引号引用变量

    千次阅读 2020-12-30 07:22:49
    可能会遇到这种情况比如使用selenium定位的时候 xpath="//*[text()='root']" 这样形式的如果你想将 root当做变量引用,比如 list=['root','root1','root2']xpath="//*[text()='"+list[0]+"']" 就会使用list的第一个...

    可能会遇到这种情况

    比如使用selenium定位的时候   xpath="//*[text()='root']" 这样形式的

    如果你想将 root当做变量引用,比如 list=['root','root1','root2']

    xpath="//*[text()='"+list[0]+"']"   就会使用list的第一个元素 ,而不是当做文本使用

    另外:使用Python连接mysql数据库,并往数据库插入数据的时候,遇到1054错误,测试后,究其原因是上传的字符串 未带引号;

    上传的字符串时变量的值,因此 就需要在变量上下功夫了

    源码为:、

    action="insert into stock(code,name,b_price,s_price,num,rate,profit) values (%f,%s,%f,%f,%f,%f,%f)" % (s5,s6,s1,s2,s3,s4,sum)

    s6的值上传的时候 木有引号 导致mysql报错 提示[Err] 1054 - Unknown column 'qq' in 'field list'

    后来发现 Python有自带函数可以转换的字符串带有引号  因此将s6改成 repr(s6)、 试了str(s6) 报错

    还需要了解下 str()与repr()的区别

    代码变为:

    action="insert into stock(code,name,b_price,s_price,num,rate,profit) values (%f,%s,%f,%f,%f,%f,%f)" % (s5,repr(s6),s1,s2,s3,s4,sum)

    之后在运行程序,进行数据库插入数据操作时  OK了

    展开全文
  • 到现在为止,我已经随机使用引号,双引号和反引号而没有任何实际想法。例:$query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, val2)';此外,在上面的示例中,考虑table,col1,val1等可以是变量...
  • --在ORACLE中,单引号有两个作用:-- 1:字符串是由单引号引用-- 2:转义。--单引号使用是就近配对,即就近原则。而在单引号充当转义角色相对不好理解--1.从第二个单引号开始被视为转义符,如果第二个单引号后面...
  • 引号 会使文本以字符的形式展示,会过滤部分扩展,但是参数扩展,算数扩展和命令替换依然有效($,``,\) 单引号 抑制所有的扩展 反斜杠 转义字符,可以限制一些双引号中的扩展 实例1: 变量嵌套:可以通过抑制外层...
  • 引号用于表和列标识符,但仅在标识符是MySQL保留关键字,或者当标识符包含空格字符或超出有限集的字符才需要(见下文)。通常建议避免使用保留关键字尽可能作为列或表标识符,避免引用问题。单引号应该用于...
  • 大家来思考个简单的问题,echo如何输出连续的空格呢?...(2)解决办法:echo 的时候 加上双引号 [root@centos76 ~]#cat b.sh a="a b" echo "$a" [root@centos76 ~]#bash b.sh a b 总结: 这个题主要是来说明
  • 对于没有多少编码经验的新手来说,PHP引号的正确使用是一个比较头疼的事情,经常会因为PHP引号的错误使用导致程序的出错。下面我们就向大家具体介绍一下有关PHP引号的正确使用方法。一.首先想想PHP里所有的单词(其实...
  • 有很方法可以逃避内容:$a = 5;$b = array(3);// Single quotes treats the insides as you type it, except for a few like// double-backslash (which makes a backslash) or backslash apostrophe, which// ...
  • 1、单引号:当变量内容用单引号(‘’),对里面的命令echo和变量USER都无法识别,只识别成字符串本身,称之为强引用。 2、双引号:当变量内容用双引号(“”),是不能识别出里面的命令echo的,但可识别出里面...
  • 本质上,你想从你的字符串中获取两种东西:不是空格或引号的字符序列,以及以引号开头和结尾的字符序列,两种引号之间没有引号。您可以很容易地将这些内容与这个正则表达式相匹配:[^\s"']+|"([^"]*)"|'([^']*)'我...
  • 呼唤远方变量以双引号字符串扩展,但不在单引号字符串中扩展:$name=World$echo"Hello$name"Hello...如果您更喜欢使用引号来避免额外的转义,则可以在同一参数中混合和匹配引号:$echo'singlequoted.'"Doublequote...
  • 暂时还不清楚原因 1.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 SC表: 这里,当做总成绩处理 select sid, sum... 运行结果: 这种是order by 子句中的 “平均成绩”没有加引号,能正确降序排列 sele...
  • java - 正则表达式,用于在未被单引号或双引号括起时使用空格分割字符串我是正规表达的新手,非常感谢你的帮助。 我正在尝试将一个表达式组合在一起,该表达式将使用未被单引号或双引号括起的所有空格分割示例字符串...
  • 在python的数据库插入操作中,当你想在双引号中间引用参数来执行语句,可以使用下面的方法: 例: # 加入学生 def addstudent(self, user, password, sno, name, sex, birthday, phone, dorm): self....
  • Loading...## 问题今天写个按钮,传递参数,遇到个障碍,代码如下`按钮``url=""`中的引号,会导致解释错误,正常来说遇到引号冲突都是加 `/`解决,然而并不适合这种情况。![]...
  • 1.ORACLE SQL 字符串引用变量,单引号,日期型处理方法:字符:|| 使用时为字符串连接ls_stop varchar(20);strsql varchar(1000);strsql:=’select * from all_tables where table_name= ‘’’||ls_stop||’’’ ’...
  • 但事实上,他们没有说明为什么他们在if语句中使用”作为question1但在echo语句中没有使用引号. 简而言之:为什么$_POST [‘question1’]在if语句中有” 以及为什么$_POST [question1]在echo语句中没有.它们是同一个...
  • 引用变量使用 $ 符号直接来进行引用,以及包括循环变量; root@sun-pc:~/桌面# x=helloworld root@sun-pc:~/桌面# echo $x helloworld 2.利用双引号 " 将括起来的字符串支持变量插值。 root@sun-pc:~/桌面#...
  • oracle个单引号的处理oracle个单引号的处理在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号使用是就近配对,即就近原则。而在单引号充当转义角色相对不好理解。下面转载1、从第...
  • var json = { a: { b: { c: 1, g: 22 }, e: { f: 1 } }, d: [1, 2], }; var need = json["a"]; console.log(need); // var obj = { // 'name': 'tom', // 'age': 23 // }; // var
  • js、html中的单引号、双引号及其转义使用在js中对相关字符做判断或取值的时候很情况下都会用到这些.------在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:IE提示出错后,再漫不经心地改为:结果...
  • 小编典典我不明白为什么...你可以使用以下正则表达式轻松匹配这些内容:[^\s"']+|"([^"]*)"|'([^']*)'我添加了捕获组,因为你不需要列表中的引号。此Java代码构建列表,如果匹配则将捕获组添加到引号中,如果捕获组...
  • 引号将用于表和列标识符,但仅在标识符为MySQL reserved keyword,或者当标识符包含空格字符或超出有限集的字符才需要(见下文)。通常建议避免使用保留的关键字作为列或表标识符(如果可能),避免引用问题。单...
  • 引号用于表和列标识符,但仅在标识符是MySQL保留关键字,或者当标识符包含空格字符或超出有限集的字符才需要(见下文)。通常建议避免使用保留关键字 尽可能作为列或表标识符,避免引用问题。单引号应该用于字符...
  • # 双引号,单引号都可以 sudo sed -i '/tsoffice.desktop/'d ${FILE} PRODUCT_DESKTOP=tsoffice.desktop # 必须是双引号 sudo sed -i "/${PRODUCT_DESKTOP}/"d ${FILE} 第二种必须是双引号。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 209,382
精华内容 83,752
关键字:

多段引用时如何使用引号