促使我想写这个系列的文章,是因为看到总有人提到相同的问题,犯相同的错误,曾经我也是这么过来的,不忍心看到后面还有人经常这么曲折的过来
先了解下,在bash脚本中,有三种引号
- 单引号 ’
- 双引号 "
- 反引号 `
单引号
两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思.
双引号
两个双引号包围起来的字符串,部分特殊字符将起到它们的作用.
这些特殊字符有: 美元符$, 反斜杠, 反引号, 感叹号!.
反引号
两个反引号包围起来的字符串,将作为命令来运行,
执行的输出结果作为该反引号的内容,称为命令替换,
它有另一种更好的写法: $(command)
我们来看几个例子,更直接的了解这三种引号的特性.
- 美元符$ 在双引号中的$ , 将发生变量引用, 而在单引号中的$, 将保留它的字面意思
$ echo "$JAVA_HOME"
D:\soft\jdk
$ echo '$JAVA_HOME'
$JAVA_HOME
- 反斜杠\ 在双引号中的, 将转义它后面的字符,使其具有特殊意义或者失去原来的特殊意义, 在单引号中的, 将保留它的字面意思
$ echo "\$JAVA_HOME"
$JAVA_HOME
$ echo '\$JAVA_HOME'
\$JAVA_HOME
双引号中的\,后面跟着$ , 这里发生了转义,使得$失去特殊意义, 变成普通字符.
- 反引号与其他两种引号的不同: 反引号包围起来的字符串将被运行,取其结果
$ echo 'date'
date
$ echo "date"
date
$ echo `date`
2019年09月24日, 周二 10:43:18