在脚本中执行变量替换时最容易犯的一个错误就是由于引用错误。
类型:
"" 双引号
'' 单引号
` 反引号
\ 反斜线
1.双引号
使用双引号可引用除字符 $、`、\外的任意字符或字符串。这些特殊字符分别为美元符号,
反引号和反斜线,对shell来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈
它,实际上与直接反馈变量并无差别。
echo "Test"
string = "Test"
echo $string
抽取特殊的字符
grep "jack" /etc/passwd
2.单引号
单引号与双引号类似,不同的是shell会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
string = "Test"
echo "The string is '$string'"
3.反引号
反引号用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。
echo `date`
echo "The date is `date`"
4.反斜线
如果下一个字符有特殊含义,反斜线防止shell误解其含义,即屏蔽其特殊含义。下述字符包含有特殊意义: & * + ^ $ ` " | ?。
例如: echo *
echo \*
打印进程ID
echo $$
echo \$$
使用乘法
expr 12 \* 12
总结:
1) 反馈字符串用双引号;但不要引用反馈本身。
2) 如果使用引用得到的结果不理想,再试另一种,毕竟只有三种引用方式,可以充分尝
试。
类型:
"" 双引号
'' 单引号
` 反引号
\ 反斜线
1.双引号
使用双引号可引用除字符 $、`、\外的任意字符或字符串。这些特殊字符分别为美元符号,
反引号和反斜线,对shell来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈
它,实际上与直接反馈变量并无差别。
echo "Test"
string = "Test"
echo $string
抽取特殊的字符
grep "jack" /etc/passwd
2.单引号
单引号与双引号类似,不同的是shell会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
string = "Test"
echo "The string is '$string'"
3.反引号
反引号用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。
echo `date`
echo "The date is `date`"
4.反斜线
如果下一个字符有特殊含义,反斜线防止shell误解其含义,即屏蔽其特殊含义。下述字符包含有特殊意义: & * + ^ $ ` " | ?。
例如: echo *
echo \*
打印进程ID
echo $$
echo \$$
使用乘法
expr 12 \* 12
总结:
1) 反馈字符串用双引号;但不要引用反馈本身。
2) 如果使用引用得到的结果不理想,再试另一种,毕竟只有三种引用方式,可以充分尝
试。
参考书籍: shell脚本学习
QQ交流群: 204944806