Back quote ( ` ) 反引号
反引号中的内容就是用来执行的命令。
当你想把系统命令的输出分配给变量时,可以使用反引号。它告诉shell把反引号之间的内容作为系统命令并执行其输出。使用这些方法,你可以将输出替换到一个变量中。
在下面的例子中,shell试图评估和替换hello这个词;由于没有叫hello的命令或脚本,它会提示错误。
$ echo `hello`
sh: hello: command not found
我们再试一下date命令:
$ echo `date`
Sun May 16 16:40:19 GMT 1999
这一次,命令是有效的,而且shell可以正确对它求值。
或者这样写:
$ today=`date '+%A, %B %d, %Y'`
$ echo $today
输出为:
Monday, September 28, 2022
注意, 这里date命令后面不能直接添加参数,参数字符串要在双引号或单引号中才可以。
Single quote and double quotes ( ' and ") // 单引号和双引号
单引号不会展开任何东西,但双引号会。例如:变量、反斜线、某些转义字符,等等。
例子:
$ echo "$(echo "upg")"
upg
$ echo '$(echo "upg")'
$(echo "upg")
单引号
用单引号(')括起来的字符保留了引号内每个字符的字面值。只有一个意外,单引号不能出现在单引号之间,即使前面有反斜杠。
双引号
在双引号(")中的字符保留了引号内所有字符的字面价值,但$, `, \ 除外。
字符$和`在双引号中保留其特殊含义,用于Shell扩展功能,这里不展开。
所以要显示这两个字符,需要前面加反斜杠\进行转义。
比如:
$ echo "\$123"
$123
$ echo "\`123"
`123
如果只有一个反斜线\, 则直接显示不进行转义。
$ echo "\123"
\123
但如果两个反斜线连在一起,只显示一个:
$ echo "\\"
\