[linux device driver] Chapter 03:以scull_load为例,讲解bash中反单引号`、双引号等的作用
2015-03-20 18:08
399 查看
在bash中,$、*、?、[、]、’、”、`、\、有特殊的含义。类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统调用。
其中,反引号类似于函数调用,而不仅仅是简单的文本替换及匹配。
命令行中,被单引号引用的部分,其中所有的特殊字符按照普通字符解释;
双引号引用的部分,仅解释$(美元符号)、\(\n \t除外)、`(反引号,命令替换符),解释后的文本仅按照普通文字处理(同单引号)。
反引号相当于命令替换,引用的部分优先执行,将运行结果替换到外层的命令行文本中;反引号可以嵌套,但是嵌套时内部的反引号必须用\转义
反斜杠用于命令换行,以及echo -e解释。
比如:
# x=*
# echo $x 此行执行了两次替换,将$x替换为*,之后将*替换为当前目录下所有文件列表的文本,
该文本作为参数赋给echo(bash会自动按照优先级,进行多层次替换
)
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x' $x不进行任何解释,直接将文本‘$x’作为参数赋给echo
$x
# echo "$x" $x替换为*,但是由于在双引号内,*不做替换,因此文本“*”将作为参数赋给echo *
下面详解反引号(命令替换符):
在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:
echo `ls`
会先执行 ls 得到xx.sh等,再替换原命令为:
echo xx.sh
最后执行结果为
xx.sh
虽然不少系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。但是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。所以,我们最好还是遵循这个规范,少用``,多用$()
建议所有在shell中使用反单引号执行bash命令的脚本统一使用$()进行替换 如:echo `ls` 替换为 echo $(ls)
其中,反引号类似于函数调用,而不仅仅是简单的文本替换及匹配。
命令行中,被单引号引用的部分,其中所有的特殊字符按照普通字符解释;
双引号引用的部分,仅解释$(美元符号)、\(\n \t除外)、`(反引号,命令替换符),解释后的文本仅按照普通文字处理(同单引号)。
反引号相当于命令替换,引用的部分优先执行,将运行结果替换到外层的命令行文本中;反引号可以嵌套,但是嵌套时内部的反引号必须用\转义
反斜杠用于命令换行,以及echo -e解释。
比如:
# x=*
# echo $x 此行执行了两次替换,将$x替换为*,之后将*替换为当前目录下所有文件列表的文本,
该文本作为参数赋给echo(bash会自动按照优先级,进行多层次替换
)
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x' $x不进行任何解释,直接将文本‘$x’作为参数赋给echo
$x
# echo "$x" $x替换为*,但是由于在双引号内,*不做替换,因此文本“*”将作为参数赋给echo *
下面详解反引号(命令替换符):
在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:
echo `ls`
会先执行 ls 得到xx.sh等,再替换原命令为:
echo xx.sh
最后执行结果为
xx.sh
虽然不少系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。但是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。所以,我们最好还是遵循这个规范,少用``,多用$()
建议所有在shell中使用反单引号执行bash命令的脚本统一使用$()进行替换 如:echo `ls` 替换为 echo $(ls)
相关文章推荐
- [linux device driver]Chapter 03:scull_load中涉及到的bash命令 exit
- [linux device driver] Chapter 03:以scull_load为引,详解Bash的位置参数和内部参数
- [linux device driver] Chapter 03:以scull_load为引,详解shell逻辑运算、基本运算、位运算
- [linux device driver] Chapter 03:scull_load脚本理解
- [linux device driver] Chapter 03:从scull_load了解awk
- [linux device driver]Chapter 03:Scull_load中涉及到的群组权限之staff\wheel
- [linux device driver] Chapter 03:从scull_load学习小括号,中括号,和大括号的区别
- [linux device driver] Chapter 03:以scull_load为例,详解mknod命令
- [linux device driver] Chapter 03:scullc_open理解
- Linux_Bash脚本_单引号’双引号“”反引号`小括号()中括号[]大括号{}
- Linux 中 反引号 单引号 双引号的作用
- [linux device driver] Chapter 03:IS_ERR的理解
- Linux 中的grep命令单引号,不加任何参数以及双引号的作用
- Linux中bash下三种引号的作用(双引号,单引号,反引号)
- [linux device driver] Chapter 03:make输出重定向
- [linux device driver] Chapter 03:字符设备注册学习
- linux bash shell 中的单引号和双引号
- 03-Linux-Bash命令基本操作
- Linux bash程序的调试讲解
- Linux基础入门及系统管理01-Linux系统基础深入讲解03