Shell 引号

   在编写Shell脚本的时候经常用到双引号(“),单引号(‘),反引号(`),和反斜杠()。下面详细讨论一下不同符号的具体作用。在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。在进行变量赋值的时候var=value,如果value中包含空白字符,例如空格,就必须使用双引号或者单引号,这样就会把引号包括的内容当做一个整体来对待,如果没有使用引号,那么bash解析器就会把所有位于第一个单词后面的内容解释为其他命令。

[appuser@hz-10-120-118-193 zhao]$ cat test.sh 
#!/bin/bash
foo=''a cd'bb'
echo $foo
[appuser@hz-10-120-118-193 zhao]$ sh test.sh 
test.sh: line 5: cdbb: command not found
单引号

  最为严格的符号,它关闭shell中所有特殊字符的解释,即单引号里面的内容全部作为普通字符解释。不管是单引号,反引号还是反斜杠都被当做普通字符处理。单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。如果单引号中出现了单引号,会从前往后两个一组进行解析,如果分组后遇到空格会报错,因为没有作为一个整体。

双引号

  由双引号括起来的字符,除美元符号($)、反斜杠()、反引号()、和双引号(")这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待,注意单引号也是作为普通字符处理的。对于$字符来说,就是用其后指定的变量的值来代替这个变量和$;对于\字符而言,是转义字符,它告诉shell不要对其后面的那个字符进行特殊处理,只当作普通字符即可。在双引号中需要在前面加上转义字符\的只有四个字符$,\,和”本身。而对”号,若其前面没有加\,则Shell会将它同前一个”号匹配。利用双引号引用变量能防止字符串分割,而保留变量中的空格。

[appuser@hz-10-120-118-193 zhao]$ cat test.sh 
#!/bin/bash
uerid=0001
pro=0.256
json_str="{\"userid\":\"$userid\",\"value\":\"$pro\"}"
echo $json_str
[appuser@hz-10-120-118-193 zhao]$ sh test.sh 
{"userid":"","value":"0.256"}
反引号

  它将反引号之间的字符串当成shell命令执行,返回命令的执行结果,如果需要嵌套,注意,嵌套使用时内层的反引号必须用反斜杠(\)将其转义。“与 () ()。

反斜杠

  反斜杠一般用作转义字符,反斜线符号()表示转义,将屏蔽下一个字符的特殊意义如果echo要让转义字符发生作用,就要使用-e选项,且包含转义字符的字符串要使用双引号。另外shell把行尾的反斜杠作为续行。
特殊字符

符号含义
&传递到脚本的参数数量
*匹配0个活多个在*之前的那个字符
+匹配一次或者多次前面那个字符
^匹配行首或者后面字符的非
$获取变量的值
`反引号,执行包括的命令
双引号
?匹配0次或者1次前面那个字符
|管道字符 or 或者的意思
\转义字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值