烦恼一般都是想太多了。

0%

Bash中的字符串相关的注意要点

经常性的,在写 Bash 脚本的时候,会遇到引号的嵌套的问题,比如说在调用 mysql 客户端命令执行相关的 SQL 语句的时候,如果在语句中又定义了变量的话,那么就会经常出现语法错误的提示,实际上就是因为对于引号的使用并不是很透彻的原因。

“ 与 ‘

这个实际上是最为明显的,双引号与单引号的区别。比较直观的解释,就是,对于在双引号内的内容,会进行相关的命令扩展,在Bash编程参考-参数与扩展 文章中就做了一些总结的。

  • 变量替换
  • 命令执行
  • 大括号扩展
  • 波浪号扩展
  • 表达式

而在单引号中的则不然,在单引号中输入的时候就会显示什么,所以说当我们想要使用任何非其字面意义的变量或者字符串的时候,用双引号就没有错。

但如果是我们想要使用的是只是其字面意义的,那就用单引号吧。

那么这没有解决一个问题就是:如果双,引号进行扩展的时候怎么破?

在单引号内嵌套双引号,或者双引号内嵌套单引号都是非常简单的,直接写就是了。如:

echo "'"
echo '"'

“ 内嵌套 “

需要使用 \ 来进行反引:

echo "\""

‘ 内嵌套 ‘

这个用反引号就不行了:

echo '''
quote>
echo '\''
quote>

这个没有办法,只能是通过在单引号的追加,而不是嵌套

echo 'abc' \'  'abc'
abc ' abc

单独输出一个这样子了